【发布时间】:2016-05-17 09:02:25
【问题描述】:
我只是在学习 c++ 中指针的概念。根据我的研究,我了解到& 用于查找变量的内存地址。我想问一下是否还有指针的内存地址。看看我下面的代码
#include <iostream>
using namespace std;
int main() {
int fish=5;
int *fishpointer=&fish;
cout << fishpointer << endl;
cout << &fishpointer << endl;
return 0;
}
上面的代码运行打印如下
0x7fff64cc1f14
0x7fff64cc1f18
每次我运行它时,两个地址都会发生变化,但我认为第二个地址的价值比第一个高 4。为什么会这样?我知道第一个地址是可变的鱼,但无法理解第二个地址。它只是垃圾值吗?
【问题讨论】:
-
' 如果还有指针的内存地址' - 是的,有。
-
指针只是一个变量,其值为地址。因此,
fishpointer有一个地址 - 就像任何其他变量一样。所以你可以用&fishpointer获取它的地址。 -
不,这不是垃圾。你正确理解为指针变量的地址。
-
“指针”可用于通俗地引用指针类型的变量,但从技术上讲,它是一个值,而不是一个变量——你不能取值的地址,但你可以获取包含值的变量的地址。分叉,我知道,但是在学习这些东西时区分是很重要的。
-
@Cameron 我将值称为地址,而不是指针。
标签: c++