c – 右值转换的左值是否会发生?
例如: int x; int *p = &x; 在上面的例子中,p是& x两个左值?或者什么是恰当的例子? 编辑: 那这个呢? int &r = x; 我确信在这个声明中没有转换,但我很困惑&操作符涉及到这个? 解决方法
引用说,转换不适用于一元&的操作数. (在这种情况下,x).所以&的操作数是一个左值.
这与一元运算符不同.如果你写x,那么lvalue-to-rvalue转换应用于子表达式x(在这种情况下具有未定义的行为,因为x尚未初始化). 非正式地,“左值到右值的转换”意味着“读取价值”. 引用并未说明&的结果,实际上它是一个右值.在int * p =& x;: > x是左值,指的是该名称的变量, int& r = x;不使用&完全是操作符的地址. &声明符中的字符只是语法,意思是r是引用到int,它不是取r的地址.在C声明符语法中,它实际上称为ptr-operator. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |