int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
int(*ptr)[3] =a;
a 为指向数组的指针, 类型为 int(*)[3], 对a+i表示第i个指针,也就是指向第i行
a[i] == *(a+i) 类型为int *, int(*)[3]类型的第i个元素,表示第i行(类型为int[3]=int*)
指向数组的指针(int(*)[3]) 执行取值操作(*) 将变成普通的指针(int *),即*(int(*)[3]) = int *
所以很好理解为啥
int** p = a行不通, 不能将int(*)[3]类型 赋值给 int** 类型,
Posted in: Linux
Comments are closed.