I have a question about a pointer to 2d array. If an array is something like
int a[2][3];
then, is this a pointer to array a
?
int (*p)[3] = a;
If this is correct, I am wondering what does [3]
mean from int(*p)[3]
?
int a[2][3];
a
is read as an array 2 of array 3 of int which is simply an array of arrays. When you write,
int (*p)[3] = a;
It declares p
as a pointer to the first element which is an array. So, p
points to the array of 3 ints which is a element of array of arrays.
Consider this example:
int a[2][3]
+----+----+----+----+----+----+
| | | | | | |
+----+----+----+----+----+----+
\_____________/
|
|
|
p int (*p)[3]
Here, p
is your pointer which points to the array of 3 ints which is an element of array of arrays.