【发布时间】:2015-12-25 22:19:04
【问题描述】:
我有几个问题。这不是家庭作业。我只是想更好地理解。
如果我有
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;相同。这种方式一般不用&吗?
【问题讨论】:
-
@intboolstring 这不是重复的,因为我的一些问题没有在那个链接中解决。
-
嗯,你应该把那些没有解决的放在那里。
-
另外,根据该链接中的 cmets,某些信息是不准确的。我不想学习不准确的东西。
-
@SeanHill:“我的一些问题没有在那个链接中解决”那么你应该问一个单一的、具体的问题,而不是随机列出的问题。