gpt4 book ai didi

c - C 中的左值查询

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:15 27 4
gpt4 key购买 nike

我对 -l 值和 r 值感到困惑。考虑代码

int x;
x=5;

int x

内存空间是为int变量预留的。然后,将值 5 分配给它。我的问题是

  1. 声明意味着 x 是左值?
  2. 如果x在内存中有地址0xyyyy,&x指的就是这个地址。这个地址是0xyyy吗l 值即 &x 是 l 值?但是,var的地址是指针,所以,那么,l-value变成指针变量?

最佳答案

据我所知,左值只是一个可以赋值给表达式的奇特术语。换句话说,如果某个东西可以出现在 = 运算符的左侧,那么它就是一个左值。这意味着 x 是一个左值,但 &x 不是 - 你不能将 x 的地址重新分配给其他东西。

如果你有像 int* getIntPtr() 这样的函数,那么 getIntPtr() 就不是左值(写 getIntPtr() = 5 没有任何意义),但 *(getIntPtr()) 是。

编辑:显然,这不是相当那么容易。如果 x 被定义为 const,x 仍然是一个左值(称为不可修改的左值),即使您不能给它赋值。我不确定是否还有其他异常(exception)情况。

关于c - C 中的左值查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216641/

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