gpt4 book ai didi

c - c中指向指针的指针,得到意想不到的值

转载 作者:行者123 更新时间:2023-11-30 18:33:03 25 4
gpt4 key购买 nike

我在对指针进行一些操作时遇到了这个:

int main(void)
{
int a = 100;
int *p, *q;
p = &a;
q = &p;

printf("\n *q= %p",*q);
printf("\n &p= %p",&p);
printf("\n *p= %d",*p);
printf("\n q= %p",q);
printf("\n p= %p",p);
printf("\n &a= %p",&a);
return 0;
}

这给了我以下输出

 *q= 0xe5b83d74
&p= 0x7ffee5b83d78
*p= 100
q= 0x7ffee5b83d78
p= 0x7ffee5b83d74
&a= 0x7ffee5b83d74

*q 给出的值与a 的地址类似,但并不相同。 *q 不是指 &a 吗? 我并不是想更正此代码。这里实际发生了什么?

最佳答案

指向a的指针被截断并打印。您正在获取一个指向 int 的指针,并将其设为指向 int 的指针。它只显示了指针的 32 位,这是可以放入 int 的 32 位。

如果您在 32 位平台(x86、ARM)上运行此代码,&a 将与 *q 相同。

您在标题中注意到这是一个指向指针的指针。然而,事实并非如此。它是一个指向已转换为指向 int 的指针并取消引用的指针。如图所示,存在差异。

关于c - c中指向指针的指针,得到意想不到的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59602320/

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