Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #110388

Re: Help on this typedef

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Help on this typedef
Date 2017-05-19 09:51 -0700
Organization None to speak of
Message-ID <lnk25c23it.fsf@kst-u.example.com> (permalink)
References (6 earlier) <7828b0dd-de46-40a2-9636-81117d1f17f6@googlegroups.com> <kfninl2nqqy.fsf@x-alumni2.alumni.caltech.edu> <799899ab-ccf3-49a4-a928-d405dc142fff@googlegroups.com> <87fug2yond.fsf@bsb.me.uk> <431ea3d0-2d91-40b9-8988-868be7f0382e@googlegroups.com>

Show all headers | View raw


joel.rees@gmail.com writes:
> On Friday, May 19, 2017 at 4:02:24 AM UTC+9, Ben Bacarisse wrote:
[...]
>> No.  char x[] and char *x mean the same thing in a parameter declaration
>> but not elsewhere, and definitely not in a struct!
>
> Yeah, parameters. You could increment a parameter declared that way as 
> if it were a pointer, but you couldn't assign a struct member delared 
> empty. I keep forgetting.

A parameter declared that way *is* a pointer.  For example, this:
    void func(int param[42]);
really means this:
    void func(int *param);
`param` simply is not an array.  (And the 42 is quietly ignored,
which is unfortunate.)

> I have this vague memory that the reasoning behind the array size 1 hack 
> was to avoid conflation with the tendency to assume a size left out was
> a pointer.

There was a time, very early in the design of C, when [] was used
to declare pointers, and defining an array object would create an
implicit pointer object pointing to the array's initial element.
Dennis Ritchie changed that because it didn't work when structures
have members that are arrays.  For example, if you have a structure
like this:

    struct foo {
        int arr[10];
    };

and the definition of arr creates a pointer, then copying the structure
would copy the pointer, and the copy would point back to the original
object.

This change was made some time around the transition from "NB"
to C.  See <https://www.bell-labs.com/usr/dmr/www/>, and search for
"Embryonic C".

Unfortunately, the myth that C arrays are really just pointers has
survived long past the time when there was any truth to it.

Suggested reading: Section 6 of the comp.lang.c FAQ,
<http://www.c-faq.com/>.  (And then the rest of it.)

[...]

> And I guess I should acknowledge that Keith and others were trying to
> point out that the standard had flip-flopped on which hack to use for 
> indeterminant, that is, flexible, arrays while I was busy working with 
> other languages in the previous decade.

I wouldn't say the standard flip-flopped.  The C89/C90 standard doesn't
mention the struct hack.  C programmers invented it, and it happened to
work.  C99 introduced flexible array members as a standard-endorsed way
to achieve the same effect while avoiding undefined behavior.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Help on this typedef fl <rxjwg98@gmail.com> - 2017-05-10 19:12 -0700
  Re: Help on this typedef Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-05-10 21:06 -0600
  Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-10 20:11 -0700
    Re: Help on this typedef David Brown <david.brown@hesbynett.no> - 2017-05-11 10:03 +0200
      Re: Help on this typedef supercat@casperkitty.com - 2017-05-11 08:35 -0700
        Re: Help on this typedef David Brown <david.brown@hesbynett.no> - 2017-05-12 10:34 +0200
          Re: Help on this typedef joel.rees@gmail.com - 2017-05-12 06:01 -0700
          Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-12 09:38 -0700
        Re: Help on this typedef joel.rees@gmail.com - 2017-05-12 05:08 -0700
          Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-13 14:25 -0700
            Re: Help on this typedef joel.rees@gmail.com - 2017-05-14 23:36 -0700
              Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-15 07:23 -0700
                Re: Help on this typedef joel.rees@gmail.com - 2017-05-18 07:40 -0700
                Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-18 09:35 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-18 10:59 -0700
                Re: Help on this typedef joel.rees@gmail.com - 2017-05-18 23:40 -0700
                Re: Help on this typedef jadill33@gmail.com - 2017-05-19 08:12 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 08:41 -0700
                Re: Help on this typedef jadill33@gmail.com - 2017-05-19 09:41 -0700
                Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-19 09:34 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 10:18 -0700
                Re: Help on this typedef Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-19 21:35 +0100
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 14:16 -0700
                Re: Help on this typedef Ike Naar <ike@iceland.freeshell.org> - 2017-05-19 21:15 +0000
                Re: Help on this typedef Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-19 23:54 +0100
                Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-19 14:25 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 15:18 -0700
                Re: Help on this typedef Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-19 23:52 +0100
                Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-19 16:42 -0700
                Re: Help on this typedef Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-20 01:16 +0100
                Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-20 01:58 -0700
                Re: Help on this typedef joel.rees@gmail.com - 2017-05-20 02:25 -0700
                Re: Help on this typedef joel.rees@gmail.com - 2017-05-19 22:09 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 23:23 -0700
                Re: Help on this typedef "James R. Kuyper" <jameskuyper@verizon.net> - 2017-05-19 13:33 -0400
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 13:44 -0700
                Re: Help on this typedef jameskuyper@verizon.net - 2017-05-19 19:20 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 23:30 -0700
                Re: Help on this typedef jameskuyper@verizon.net - 2017-05-20 07:20 -0700
                Re: Help on this typedef jameskuyper@verizon.net - 2017-05-20 07:46 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-22 10:50 -0700
                Re: Help on this typedef "James R. Kuyper" <jameskuyper@verizon.net> - 2017-05-18 12:37 -0400
                Re: Help on this typedef Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-18 20:02 +0100
                Re: Help on this typedef joel.rees@gmail.com - 2017-05-19 00:20 -0700
                Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-19 09:51 -0700
                Re: Help on this typedef supercat@casperkitty.com - 2017-05-19 10:31 -0700
                Re: Help on this typedef Ike Naar <ike@iceland.freeshell.org> - 2017-05-19 19:48 +0000
                Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-20 08:47 -0700
        Re: Help on this typedef "Patrick.Schluter" <Patrick.Schluter@free.fr> - 2017-05-27 18:50 +0200
  Re: Help on this typedef joel.rees@gmail.com - 2017-05-12 06:17 -0700
    Re: Help on this typedef supercat@casperkitty.com - 2017-05-12 08:46 -0700
      Re: Help on this typedef joel.rees@gmail.com - 2017-05-12 18:11 -0700
        Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-12 18:37 -0700
          Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-13 09:44 -0700
            Re: Help on this typedef Keith Thompson <kst-u@mib.org> - 2017-05-13 13:47 -0700
              Re: Help on this typedef Robert Wessel <robertwessel2@yahoo.com> - 2017-05-14 00:28 -0500
              Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-14 13:39 -0700
                Re: Help on this typedef raltbos@xs4all.nl (Richard Bos) - 2017-05-15 13:02 +0000
                Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-15 07:30 -0700
        Re: Help on this typedef supercat@casperkitty.com - 2017-05-12 20:45 -0700
        Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-13 09:57 -0700
        Re: Help on this typedef Philip Lantz <prl@canterey.us> - 2017-05-13 12:07 -0700
        Re: Help on this typedef David Brown <david.brown@hesbynett.no> - 2017-05-14 15:34 +0200
      Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-14 12:48 -0700
        Re: Help on this typedef supercat@casperkitty.com - 2017-05-15 07:39 -0700
          Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-24 08:23 -0700
            Re: Help on this typedef supercat@casperkitty.com - 2017-05-24 09:17 -0700
              Re: Help on this typedef Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-27 06:15 -0700

csiph-web