假设我们宣布了一个全局变量&初始化:
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很好。
答案 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位架构。