2 ms·
> "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 "p
by kelnos 2y 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.
- fsckboy 2y agoint *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)
- tpoacher 2y agoYes, 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