Sam*_*uel 0 c++ pointers multidimensional-array
我有这段代码片段
const int col= 5;const int row= 5;
int a[row][col] = {0};
int (*p)[col] ;
p = a;
Run Code Online (Sandbox Code Playgroud)
这些语句打印相同的地址
cout <<p;
cout << endl;
cout << *p;
Run Code Online (Sandbox Code Playgroud)
在我看来,因为p指向一个5的数组ints,解引它
应该给出第一个似乎不是这样的值.
救命!
因为
p指向一个5的数组ints
这是正确的.
解除引用它应该给出第一个值
不,它的类型是"指向数组的指针"; 取消引用会给出"数组",int*当你对它做任何事情时它会衰减到指针 - 包括打印它.
如果你有一个指针 int
int * p = a;
Run Code Online (Sandbox Code Playgroud)
那么*p确实会给出第一个数组元素.