gpt4 book ai didi

c - `*&p` 与 `&*p` 之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:14 25 4
gpt4 key购买 nike

int a=10;
int *p=&a;

现在查看 &*p 我们首先查看 *p10 然后是 &10这是10的地址或a

的地址

*&p 的情况下,我们首先查看 p 的地址,然后查看该地址中的值 10>/p>

但是我知道 *&p&*p 是一样的,为什么?

最佳答案

让我们画出你的变量:

+---+     +---+| p | --> | a |+---+     +---+

也就是说,p 指向a

现在如果你执行&*p然后你首先解引用p得到a,然后你得到a的地址,它为您留下指向 a 的指针。

如果我们采用*&p,那么您将获得p 的地址以获取指向p 的指针,然后您解引用该指针以获取p。这是指向 a 的指针。

因此,尽管表达式执行不同的操作,但最终结果是相同的:指向 a 的指针。

下降编译器可能什么都不做,因为解引用运算符 * 和寻址运算符 & 在一起总是会相互抵消,无论它们的顺序。

关于c - `*&p` 与 `&*p` 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53935936/

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