在C++中不允许使用指向整数文字的指针。
但是,我可以使用address-of(&)运算符获取文字的地址。
const int & a = 5;
const int & b = 5;
cout << &a << endl;
cout << &b << endl;
结果是&a和&b不同!!!
为什么???对于字符串文字,一个字符串文字只有一个内存地址。为什么相同的整数文字再次声明时具有不同的内存地址?
最佳答案
您没有使用文字的地址:“5”是一个prvalue,用于初始化类型为int的临时类型,其生存期绑定(bind)到const引用a。因此,据我所知,&a!=&b
必须(*)成立:
此外,作为仿效规则的演示,该程序
int main(){
const int a = 5;
const int b = 5;
return &b!=&a;
}
编译为(gcc 7.2 -O3):
main:
mov eax, 1
ret
:)
关于c++ - C++中整数文字的内存地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46600017/