gpt4 book ai didi

c++ - 为什么使用 `int (*p)[5]` 的结果如此困惑?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:27 26 4
gpt4 key购买 nike

我知道 int (*p)[5] 表示一个指向 5 个整数数组的指针。所以我在下面编写这个程序:

#include <iostream>
using namespace std;

int main()
{
int a[5]={0,1,2,3,4};
int (*q)[5]=&a;
cout<<a<<endl;
cout<<q<<endl;
cout<<*q<<endl;
cout<<**q<<endl;
return 0;
}

在我的机器上结果是:

0xbfad3608
0xbfad3608 //?__?
0xbfad3608
0

可以理解为*q表示a[0]的地址,**q表示a的值[0],但为什么qa*q的值相同呢?在我可怜的心目中,这应该是他们的地址!我完全糊涂了。有人请帮助我。请!

最佳答案

这样看:

   q == &a
*q == a
**q == *a

您没有尝试打印 &a。如果这样做,您将看到它与 a 具有相同的值。由于 &a == a,并且 q == &a,并且 *q == a,通过传递性 q == *q

如果您想知道为什么 &a == a,请查看 Why is address of an array variable the same as itself?

关于c++ - 为什么使用 `int (*p)[5]` 的结果如此困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com