C中下标引用的优先级高于间接访问
指向数组的指针
int matrix[2][3] = {1,2,3,4,5,6}
int (*p)[3] = matrix;
有了括号后,p先是一个指针,指向的是一个3维整型数组
*p指向matrix的第一行
指针每一次的移动是根据数组的长度的进行移动
*p = matrix[0]
*(p+1) = matrix[1]
如果要对matrix的每一个元素进行引用
(*p)[0] = matrix[0][0]
(*p)[2] = matrix[0][2]
(*(p+1))[0] = matrix[1][0]
(*(p+1))[2] = matrix[1][2] //这里的括号必须不能少
对于多维数组在函数中的传递
fun(int (*mat)[3])
fun(int mat[][3])
都是可以的
但是 fun(int **mat)是错误的
因为这里把mat声明为一个指向整型指针的指针,和指向整型数组的指针并不是一回事。