Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于C/C++;复引用运算符_C++_C_Pointers - Fatal编程技术网

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)