C++ 关于C/C++;复引用运算符
我对这个问题有点怀疑: 如果我有:C++ 关于C/C++;复引用运算符,c++,c,pointers,C++,C,Pointers,我对这个问题有点怀疑: 如果我有: int a = 11; int *b = &a; 当我这样做时: &*b 我得到了b指向的a的地址,所以我的问题是: 解引用运算符是否返回指向的变量或该变量的值 解引用运算符是否返回指向的变量或该变量的值 它返回一个左值,该左值引用指向的对象(即以您自己的术语指向的变量)。如果在需要右值的上下文中使用它,将应用左值到右值的转换(即,该变量的值将从该变量中读取) 所以 所以 可以将其视为返回对对象的引用。正如返回左值引用的函数是左值一样,一
int a = 11;
int *b = &a;
当我这样做时:
&*b
我得到了b
指向的a
的地址,所以我的问题是:
解引用运算符是否返回指向的变量或该变量的值
解引用运算符是否返回指向的变量或该变量的值
它返回一个左值,该左值引用指向的对象(即以您自己的术语指向的变量)。如果在需要右值的上下文中使用它,将应用左值到右值的转换(即,该变量的值将从该变量中读取)
所以
所以
可以将其视为返回对对象的引用。正如返回左值引用的函数是左值一样,一元
*
运算符也是左值。您以一种简单而巧妙的方式锁定了它:)您在第一行中有一个输入错误或错误,b==&a
,*b==a
。那么说一元*返回指向的变量,而不是直接返回值是否更正确?@xdevel2000:我不喜欢在这种情况下使用变量。术语变量通常还有其他含义(比如它有一个名称),但它产生的是对象,而不是值。(关于变量,请考虑:int*p=new int(5);
,表达式*p
生成一个对象,但它不是程序中的变量--p
是一个变量,但*p
不是)[所有这些都假设我们处理的是指针,而不是对象重载运算符*
]
b == &a
*b == a
&*b == &(*b) == &(a)