我理解ptr
是指向M[0]
地址的指针。
因此,我认为*ptr
代表M[0]
的值。
但是为什么两者显示相同的值呢?
代码如下:
#include <iostream>
using namespace std;
int main(void) {
int M[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int (*ptr)[3]; int *p; int **pt;
ptr = M;
cout << ptr << " " << *ptr;
return 0;
}
我期待一个明确的答案。
还有,我想知道怎样才能打印出ptr[0]
。
当
ptr
是指针数组时,为什么ptr
和*ptr
显示相同的值?
你对ptr
的解释是错误的。特别地,ptr
不是指针数组,而是指向int[3]
类型数组的指针。
表示ptr
的类型为int (*)[3]
,而*ptr
的类型为int[3]
。现在,由于一个名为的属性数组指向指针衰减,这个结果数组衰减为int*
(意味着指向其第一个元素的指针),并给出您观察到的输出。
更重要的是,注意ptr
指向与*ptr
具有相同值的第一个内部数组{1,2,3}
。也就是说,ptr
和*ptr
的类型不同,但对于给定的数组,它们的值相同。
我想知道如何打印
ptr[0]
。
从上面的讨论中,我们可以看到*ptr
和ptr[0]
是一样的,所以你已经得到了你想要的值。