Hacker News new | ask | show | jobs
by kelnos 585 days ago
> "a pointer to an array of X" is simply "a pointer to X"

I don't believe these two are the same. An "array of X" indeed decays to a "pointer to X". But a "pointer to an array of X" is something else. E.g.

    int foo[3];  // array of int
    int *foo;    // pointer to int
    int *foo[3]; // pointer to array of int
Perhaps the first two are what you mean, though, and this is just a terminology issue.
1 comments

  int *foo[3]; // pointer to array of int
that's an array of 3 pointers to ints. if you pass foo as an argument you get a pointer to a pointer to an int (with knowledge if you can hang onto it that there are more pointers to ints lined up in memory)
Yes, but this is different:

  int (* foo) [3]
This is a pointer to an array of 3 ints.

And you could pass this to an appropriate function as an argument, to pass the whole array, not just a decayed pointer.

And more generally, I'd group things as unambiguously as possible even in your example:

    int * (foo [3])
to make the intent clearer