指针存储在哪里?

时间:2014-10-23 10:02:06

标签: c pointers memory memory-management

假设我们宣布了一个全局变量&初始化:

short var = 3900;

它分别存储在堆栈中:

...[][][][][][][][15][60][][][]... (60 + (15*256) = 3900)

然后将如何/在哪里存储新的变量指针?

int p = &var;

地址是否像普通整数一样存储?不变?类型相关的? (如果指针是类型char并且指向的值是int,gcc不会抱怨。为什么它会在1字节中分配大数?优化?


编辑:哦,我明白了。 考虑一下:

int num = 5;
char* p = #

p是指针,指针是更多的字节,它们可以代表这么大的地址。 除此之外.. * p是char并且不能代表更大的数字然后是256. 5很好。

1 个答案:

答案 0 :(得分:0)

它们也像普通整数一样存储。 让方框为每个4字节的存储空间。

[]
[]
[]
[]
[]

short var = 3900;内存变为

之后
[3900]
[]
[]
[]
[]

宣布int p = &var;

[3900] //Let the address be 0x7fff9575
[0x7fff9575] //stores the address of where var is stored. It is actually an integer "2147456373" value 
[]
[]
[]

希望这有帮助。

编辑:这适用于32位架构。