As far as I know, in some contexts, an array is converted into a pointer to its first element:
int a[5];
int * p;
p = a;
Following this approach and considering I can assign an array to a pointer, why can't I assign a bidimensional array to a pointer to a pointer?
int a[5][5];
int ** q;
q = a;
However, I can assign an array of pointers to a pointer to a pointer:
int * p[5];
int ** q;
q = p;
If an array is converted into a pointer to its first element, when q = a happens in the second example, a should be a pointer to a[0] and a[0] should be a pointer to a[0][0], right?
Besides, I don't get an error if I do:
cout << **a;
Thanks in advance and I hope you can help me to understand.
The problem is that an array int a[5][5];
stores 25 consecutive int
.
A pointer to arrays/pointers like int **q;
expects to find an array of consecutive pointers to int
.
This is why the assignment you want to do is not possible.
a multi-dimensional array can be assigned to a single pointer
int a[5][5];
int *p = a;
because the memory is allocated as a single block organized by row.
a = a11 a12 a13
a21 a22 a23
a = a11 a12 a13 a21 a22 a23
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With