gpt4 book ai didi

c++ - 当我们在 C++ 中将常量整数引用分配给整数指针时,行为是什么?

转载 作者:行者123 更新时间:2023-11-30 01:15:11 26 4
gpt4 key购买 nike

请查看下面的代码。我将一个 const 整数值的地址分配给一个整数指针。而且我也可以打印这些地址,但我无法打印值(注释行)。任何人都可以解释一下内部实际发生的事情吗?

 int main()
{
int *a;
cout<<a<<"\n";
a = (int*)20;
cout<<a<<"\n";
cout<<(int*)20<<"\n";
int *b;
cout<<b<<"\n";
b = (int*)20;
cout<<b<<"\n";
//cout<<*a<<"\n";
//cout<<*b<<"\n";
return 0;
}


Output:
-------
0
0x14
0x14
0x7fff3c914690
0x14

最佳答案

您没有分配常量整数值的地址。相反,您所说的是“将 20 视为地址”,即 (int*)20。因此,当您取消引用它时(即 *a),您说的是地址 20 上的内容,这当然是垃圾。在获取它的地址之前,您需要将 20 存储在某个地方。

const int value = 20;
const int * a = &value;
cout << *a << endl;

会很好...

关于c++ - 当我们在 C++ 中将常量整数引用分配给整数指针时,行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28916031/

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