取消引用指针会给出一个地址

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,解引它
应该给出第一个似乎不是这样的值.
救命!

Mik*_*our 6

因为p指向一个5的数组ints

这是正确的.

解除引用它应该给出第一个值

不,它的类型是"指向数组的指针"; 取消引用会给出"数组",int*当你对它做任何事情时它会衰减到指针 - 包括打印它.

如果你有一个指针 int

int * p = a;
Run Code Online (Sandbox Code Playgroud)

那么*p确实会给出第一个数组元素.