gpt4 book ai didi

c++ - 指针变量,var 和 &var 的区别

转载 作者:搜寻专家 更新时间:2023-10-31 00:29:02 26 4
gpt4 key购买 nike

#include <iostream>

using namespace std;

int main() {
int* z = new int(9);

cout << "address: " << z << endl;
cout << "value: " << *z << endl;
cout << "referance: " << &z << endl;
return 0;
}

查看 cout 值,我期望地址和引用给出相同的地址,但输出是这样的:

address: 0x7fc452c032a0
value: 9
referance: 0x7fff5191b8d8

只是好奇其中的原因,plain value(z) 是堆中值为 9 的变量的地址,其中 var(&z) 是位于堆栈中的指针变量的地址?

这是一个可视化:

enter image description here

最佳答案

&z 指定指针int * z地址 存储分配的地址new int(9).

指针 z 和值 9 存储在内存中的两个不同位置。

这里没有任何引用的概念,只有地址

关于c++ - 指针变量,var 和 &var 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43023129/

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