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


Groups > comp.lang.c > #142568

Re: Array-as-pointer Syntax

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Array-as-pointer Syntax
Date 2019-03-28 14:04 -0700
Organization None to speak of
Message-ID <lnsgv6aex6.fsf@kst-u.example.com> (permalink)
References <761347c7-4f03-42f3-a156-5f357c8ae091@googlegroups.com>

Show all headers | View raw


"David T. Ashley" <dashley@gmail.com> writes:
> Given:
>
>   int x[1000];
>
> what is the difference between:
>
>    memset(x, 0, sizeof(x));
>
> and
>
>    memset(&x, 0, sizeof(x));
>
> I would think there is NO difference, but I might be missing something ...

As others have explained, the pointer arguments are of different types,
but they point to the same location, yielding the same value after the
implicit conversion to the parameter type void*.

The phrase "Array-as-pointer syntax" is a bit misleading.  Strictly
speaking, there's no such thing.  It's true that in an expression like

    foo[42]

the subexpression foo can be either of pointer type or of array type --
but in fact the index expression *always* requires one operand of
pointer type and one of integer type.  If the prefix happens to be an
array name, it's implicitly converted to a pointer expression.

Similarly, the first argument to memset() must be a pointer expression.
If it's an array name, the argument expression is implicitly converted
to a pointer expression.

If you think this is all counterintuitive and confusing, I agree -- but
it's important to understand it.

See section 6 of the comp.lang.c FAQ http://www.c-faq.com/

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Will write code for food.
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 | Unroll thread


Thread

Array-as-pointer Syntax "David T. Ashley" <dashley@gmail.com> - 2019-03-28 10:04 -0700
  Re: Array-as-pointer Syntax Bart <bc@freeuk.com> - 2019-03-28 17:18 +0000
    Re: Array-as-pointer Syntax David Brown <david.brown@hesbynett.no> - 2019-03-28 21:31 +0100
  Re: Array-as-pointer Syntax Ian Collins <ian-news@hotmail.com> - 2019-03-29 06:23 +1300
    Re: Array-as-pointer Syntax James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-03-28 12:09 -0700
      Re: Array-as-pointer Syntax Ian Collins <ian-news@hotmail.com> - 2019-03-29 08:21 +1300
      Re: Array-as-pointer Syntax Ike Naar <ike@iceland.freeshell.org> - 2019-03-28 22:59 +0000
        Re: Array-as-pointer Syntax James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-03-28 17:44 -0700
    Re: Array-as-pointer Syntax Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-28 20:12 +0000
  Re: Array-as-pointer Syntax James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-03-28 11:57 -0700
    Re: Array-as-pointer Syntax Keith Thompson <kst-u@mib.org> - 2019-03-28 13:57 -0700
      Re: Array-as-pointer Syntax James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-03-28 19:50 -0400
  Re: Array-as-pointer Syntax Keith Thompson <kst-u@mib.org> - 2019-03-28 14:04 -0700
  Re: Array-as-pointer Syntax John Bode <jfbode1029@gmail.com> - 2019-03-29 07:24 -0700
    Re: Array-as-pointer Syntax Ike Naar <ike@iceland.freeshell.org> - 2019-03-29 18:08 +0000

csiph-web