gpt4 book ai didi

c - &(*x) 是如何工作的?详情如下

转载 作者:行者123 更新时间:2023-12-05 08:36:56 24 4
gpt4 key购买 nike

int a = 1;
int* x = &a;
//-> &*x equal to &a

如果指针x的地址为a并且*x指向a的值,编译器无法知道 *x 是指 a,如果我传递 * 它只能知道 a 的值x.

但事实证明它知道。那么这是如何工作的呢?当我把 &&*x 一样编译时,编译器是否也传递了地址,或者它只是取消了 * 就好像它就像 x 还是其他方式?

最佳答案

1ax*x 都是表达式

有些表达式有地址(它们被称为“左值”),有些则没有(它们被称为“右值”)。

1 是一个右值,它没有地址。所以 &1 无法编译。

a 是一个左值,所以它确实有一个地址。

*x 也是一个左值,所以它也有一个地址。这就是语言的工作原理。它本可以采用不同的方式(*x 可以是右值),但它被设为左值,因为提供地址很方便。

对于运算符&a*x 没有区别,因为它们具有相同的值类别(都是左值) .

您似乎假设(即使不知道术语)只有变量名是左值(只有它们有地址),但事实并非如此。

关于c - &(*x) 是如何工作的?详情如下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67192703/

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