Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #153132
| From | Keith Thompson <Keith.S.Thompson+u@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: does char *str="abcd"; alloc addressable memory? |
| Date | 2020-07-07 10:03 -0700 |
| Organization | None to speak of |
| Message-ID | <87h7uj9s14.fsf@nosuchdomain.example.com> (permalink) |
| References | <rdv1l5$clo$1@reader1.panix.com> <rdv3ic$t82$1@dont-email.me> <372e8d3b-52d6-4114-b893-6512633f5c9co@googlegroups.com> <re0qbv$ihn$1@reader1.panix.com> <86eepnh2wk.fsf@linuxsc.com> |
Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
> John Forkosh <forkosh@panix.com> writes:
>> Malcolm McLean <malcolm.arthur.mclean@gmail.com> wrote:
>>> On Monday, 6 July 2020 12:57:06 UTC+1, Bonita Montero wrote:
>>>> The compiler should give you an error for casting a string-literal to
>>>> a pointer to non-const characters. If cou cast it explicitly you may
>>>> modify the caracters and that usually works, but it's not guaranteeed.
>>>> Most platforms will make a writable copy of a read-only mapped page.
>>>
>>> It doesn't warn because const was a late addition to C, and string literals
>>> were originally char *s.
>>> You can declare a writeable string with
>>>
>>> char writeable[] = "Overwrite me";
>>>
>>> this is also seldom a good idea.
>>
>> As mentioned upthread
>> char *str = ( argc>1? argv[1] : (char *)"01234&56789" );
>> compiles without the -Wwrite-strings warning, but still
>> segfaults. And
>> char str[] = ( argc>1? argv[1] : "01234&56789" );
>> gives an error
>> tester.c:7:16: error: invalid initializer
>> 7 | char str[] = ( argc>1? argv[1] : "01234&56789" );
>> | ^
>>
>> As suggested downthread, I can easily
>> char default[99] = "whatever",
>> *str = ( argc>1? argv[1] : default );
>> but I'd prefer the more compact notation if possible.
>> Any way to get that to work?
>
> It's compound literals to the rescue!
>
> char *str = argc > 1 ? argv[1] : (char[]){ "01234&56789" };
>
> No errors, no undefined behavior, no problem.
One thing to keep in mind is that the object created by a compound
literal has automatic storage duration. In this case I don't think
that matters, but it is a difference between string literals and
compound literals. (A compound literal outside a function body
creates an object with static storage duration.)
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Working, but not speaking, for Philips Healthcare
void Void(void) { Void(); } /* The recursive call of the void */
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-06 11:24 +0000
Re: does char *str="abcd"; alloc addressable memory? jacobnavia <jacob@jacob.remcomp.fr> - 2020-07-06 13:29 +0200
Mark Twain had something to say about this... (Was: does char *str="abcd"; alloc addressable memory?) gazelle@shell.xmission.com (Kenny McCormack) - 2020-07-06 12:48 +0000
Re: Mark Twain had something to say about this... (Was: does char *str="abcd"; alloc addressable memory?) BGB <cr88192@gmail.com> - 2020-07-06 11:55 -0500
Re: Mark Twain had something to say about this... (Was: does char *str="abcd"; alloc addressable memory?) Vir Campestris <vir.campestris@invalid.invalid> - 2020-07-06 21:21 +0100
Re: Mark Twain had something to say about this... John Forkosh <forkosh@panix.com> - 2020-07-07 03:21 +0000
Re: Mark Twain had something to say about this... (Was: does char *str="abcd"; alloc addressable memory?) mark.bluemel@gmail.com - 2020-07-09 06:30 -0700
Re: Mark Twain had something to say about this... (Was: does char *str="abcd"; alloc addressable memory?) Richard Damon <Richard@Damon-Family.org> - 2020-07-06 22:16 -0400
Re: Mark Twain had something to say about this... Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-06 23:22 -0700
Re: Mark Twain had something to say about this... John Forkosh <forkosh@panix.com> - 2020-07-07 02:46 +0000
Re: Mark Twain had something to say about this... (Was: does char *str="abcd"; alloc addressable memory?) jacobnavia <jacob@jacob.remcomp.fr> - 2020-07-07 09:29 +0200
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-06 11:25 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-07 03:05 +0000
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-06 23:25 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-07 06:47 +0000
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-07 07:00 +0000
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-07 01:24 -0700
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-07 20:47 +0100
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-08 03:43 +0000
Re: does char *str="abcd"; alloc addressable memory? David Brown <david.brown@hesbynett.no> - 2020-07-07 09:35 +0200
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-07 07:54 +0000
Re: does char *str="abcd"; alloc addressable memory? David Brown <david.brown@hesbynett.no> - 2020-07-07 11:27 +0200
Re: does char *str="abcd"; alloc addressable memory? Richard Damon <Richard@Damon-Family.org> - 2020-07-09 06:53 -0400
Re: does char *str="abcd"; alloc addressable memory? David Brown <david.brown@hesbynett.no> - 2020-07-09 14:48 +0200
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-09 17:01 +0100
Re: does char *str="abcd"; alloc addressable memory? David Brown <david.brown@hesbynett.no> - 2020-07-09 22:10 +0200
Re: does char *str="abcd"; alloc addressable memory? scott@slp53.sl.home (Scott Lurndal) - 2020-07-09 20:23 +0000
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-09 23:56 +0100
Re: does char *str="abcd"; alloc addressable memory? antispam@math.uni.wroc.pl - 2020-07-10 03:25 +0000
Re: does char *str="abcd"; alloc addressable memory? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-07-10 11:56 -0400
Re: does char *str="abcd"; alloc addressable memory? richard@cogsci.ed.ac.uk (Richard Tobin) - 2020-07-10 12:31 +0000
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-09 13:35 -0700
Re: does char *str="abcd"; alloc addressable memory? scott@slp53.sl.home (Scott Lurndal) - 2020-07-09 22:17 +0000
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-09 23:50 +0100
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-09 16:52 +0100
Re: does char *str="abcd"; alloc addressable memory? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-07-09 10:13 -0700
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-09 11:24 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-09 22:59 +0000
Re: does char *str="abcd"; alloc addressable memory? Manfred <noname@add.invalid> - 2020-07-10 16:36 +0200
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-10 15:54 +0100
Re: does char *str="abcd"; alloc addressable memory? Manfred <noname@add.invalid> - 2020-07-10 18:33 +0200
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-10 22:50 +0100
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-11 16:21 +0100
Re: does char *str="abcd"; alloc addressable memory? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-07-11 08:55 -0700
Re: does char *str="abcd"; alloc addressable memory? Bart <bc@freeuk.com> - 2020-07-11 17:09 +0100
Re: does char *str="abcd"; alloc addressable memory? Manfred <noname@add.invalid> - 2020-07-11 18:34 +0200
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-10 13:17 -0700
Re: does char *str="abcd"; alloc addressable memory? Manfred <noname@add.invalid> - 2020-07-11 02:00 +0200
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-10 17:46 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-11 03:09 +0000
Re: does char *str="abcd"; alloc addressable memory? Manfred <noname@add.invalid> - 2020-07-11 18:43 +0200
Re: does char *str="abcd"; alloc addressable memory? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-07-11 15:09 -0400
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-11 13:39 -0700
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-11 15:50 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-12 01:06 +0000
Re: does char *str="abcd"; alloc addressable memory? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-07-10 08:54 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-11 03:26 +0000
Re: does char *str="abcd"; alloc addressable memory? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-07-11 03:56 -0700
Re: does char *str="abcd"; alloc addressable memory? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-07-10 08:46 -0700
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-10 13:38 -0700
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-10 13:54 -0700
Re: does char *str="abcd"; alloc addressable memory? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-07-07 08:52 -0400
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-07 02:56 +0000
Re: does char *str="abcd"; alloc addressable memory? antispam@math.uni.wroc.pl - 2020-07-07 19:08 +0000
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-08 04:07 +0000
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-07 21:54 -0700
Re: does char *str="abcd"; alloc addressable memory? Ike Naar <ike@sdf.org> - 2020-07-06 11:56 +0000
Re: does char *str="abcd"; alloc addressable memory? Bonita Montero <Bonita.Montero@gmail.com> - 2020-07-06 13:57 +0200
Re: does char *str="abcd"; alloc addressable memory? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-07-06 05:37 -0700
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-06 19:52 +0100
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-06 12:20 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-07 03:32 +0000
Re: does char *str="abcd"; alloc addressable memory? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-07-07 06:26 -0700
Re: does char *str="abcd"; alloc addressable memory? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-07-07 10:03 -0700
Re: does char *str="abcd"; alloc addressable memory? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-07-09 10:07 -0700
Re: does char *str="abcd"; alloc addressable memory? John Forkosh <forkosh@panix.com> - 2020-07-08 03:57 +0000
Re: does char *str="abcd"; alloc addressable memory? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-07-08 11:02 -0400
Re: does char *str="abcd"; alloc addressable memory? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-07-06 09:43 -0700
Re: does char *str="abcd"; alloc addressable memory? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-07-06 19:35 +0100
Re: does char *str="abcd"; alloc addressable memory? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2020-07-06 18:50 -0700
Re: does char *str="abcd"; alloc addressable memory? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-07-06 08:35 -0400
Re: does char *str="abcd"; alloc addressable memory? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-07-06 11:21 -0400
Re: does char *str="abcd"; alloc addressable memory? Barry Schwarz <schwarzb@delq.com> - 2020-07-06 09:58 -0700
Re: does char *str="abcd"; alloc addressable memory? scott@slp53.sl.home (Scott Lurndal) - 2020-07-06 23:07 +0000
Re: does char *str="abcd"; alloc addressable memory? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-07-06 20:03 -0400
Re: does char *str="abcd"; alloc addressable memory? scott@slp53.sl.home (Scott Lurndal) - 2020-07-07 14:36 +0000
Re: does char *str="abcd"; alloc addressable memory? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-07-07 11:58 -0400
csiph-web