C++ 取消对指针的引用会给出一个地址

C++ 取消对指针的引用会给出一个地址,c++,pointers,multidimensional-array,C++,Pointers,Multidimensional Array,我有这些代码片段 const int col= 5;const int row= 5; int a[row][col] = {0}; int (*p)[col] ; p = a; 这些语句打印的地址相同 cout <<p; cout << endl; cout << *p; cout 因为p指向5个int的数组 这是正确的 取消对它的引用应给出第一个值 不,它的类型是“指向数组的指针”;取消

我有这些代码片段

    const int col= 5;const int row= 5;

    int a[row][col] = {0};

    int (*p)[col] ;

    p = a;
这些语句打印的地址相同

    cout <<p;
    cout << endl;
    cout << *p;  
cout
因为
p
指向5个
int的数组

这是正确的

取消对它的引用应给出第一个值

不,它的类型是“指向数组的指针”;取消引用会产生“array”,当您使用它做任何事情时(包括打印),它会衰减为
int*
指针

如果您有指向
int

int * p = a;
然后,
*p
确实会给出第一个数组元素

因为
p
指向5个
int的数组

这是正确的

取消对它的引用应给出第一个值

不,它的类型是“指向数组的指针”;取消引用会产生“array”,当您使用它做任何事情时(包括打印),它会衰减为
int*
指针

如果您有指向
int

int * p = a;

然后
*p
确实会给出第一个数组元素。

您还需要取消引用[col]部分的第一个元素。到目前为止,您只能获得rows@MaximEGORUKIN撤销引用仍然给出变量的地址而不是实际变量。@ BrimiBIZA,但我有一个指针指向<代码> A<代码>,这是一个数组,C++表示数组的名称给元素提供地址。不是吗?它确实给出了第一个元素的地址。二维数组的每个元素都是一维数组,所以它指向的就是一维数组。@Mike Seymour找到你了!但是,我是C++新手,指针很难给出任何建议来帮助我理解它们。你也需要去引用[COL]部分的第一个元素。到目前为止,您只能获得rows@MaximEGORUKIN撤销引用仍然给出变量的地址而不是实际变量。@ BrimiBIZA,但我有一个指针指向<代码> A<代码>,这是一个数组,C++表示数组的名称给元素提供地址。不是吗?它确实给出了第一个元素的地址。二维数组的每个元素都是一维数组,所以它指向的就是一维数组。@Mike Seymour找到你了!但是,我是C++新手,指针很难给出任何建议来帮助我如何理解它们。那么,我得到的地址与“代码> COL/CODE >中的第一个值的地址相同,或者数组有自己的地址?一个实体?”塞缪尔:数组的第一个元素总是有相同的地址。数组本身。那么我得到的地址是否与该
列中第一个值的地址相同,或者数组有自己的地址实体?@samuel:数组的第一个元素始终与数组本身具有相同的地址。