我有几个问题,这不是作业,我只是想更好地理解。
如果我有
int * b = &k;
那么
k
必须是一个整数,而b
是指向k
在内存中位置的指针,对吗?b
的底层“数据类型”是什么?当我输出它时,它返回诸如0x22fe4c
之类的东西,我假设这是十六进制表示内存位置2293324
,对吗?内存位置'2293324'确切地在哪里?“堆”中?我怎样才能输出例如内存位置
0
,1
,2
等处的值?如果我输出
*b
,这与直接输出k
相同,因为*
以某种方式意味着由b
指向的值。但这似乎与b
的声明不同,其声明为int * b = k
,因此如果*
的含义是“值”,那么这不意味着“声明b
为值k
”吗?我知道它不是,但我仍然想准确理解这种语言。如果我输出
&b
,这实际上返回指针本身的地址,与k
无关,对吗?我还可以这样做:
int & a = k;
,这似乎与int a = k;
相同。通常不需要以这种方式使用&
吗?