当ptr是指针数组时,为什么ptr和*ptr显示相同的值?

  • 本文关键字:ptr 显示 数组 指针 c++ pointers
  • 更新时间 :
  • 英文 :


我理解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]

从上面的讨论中,我们可以看到*ptrptr[0]是一样的,所以你已经得到了你想要的值。

相关内容

  • 没有找到相关文章

最新更新