int b[3][2] = { {0, 1}, {2, 3}, {4, 5} };
int (*bpp)[2] = b;
int *bp = b[0];
At the above code: Is *bpp a pointer to a two-dimensional array? Or an array of pointers with the length of 2? Why is *bpp surrounded with parenthesis? Is there a difference between *bpp[2] and (*bpp)[2] ?
Meantime, in the following code: (Changing the dimension of the array)
int i[4] = { 1, 2, 3, 4 };
int (*ap)[2] = (int(*)[2])i;
The second line is very confusing to me, especially the typecasting (int(*)[2]), what data type is it exactly casting to?
Thank you ^^