gpt4 book ai didi

c - 指针存储在哪里?

转载 作者:行者123 更新时间:2023-11-30 17:27:04 25 4
gpt4 key购买 nike

假设我们声明并初始化了一个全局变量:

short var = 3900;

并且它分别存储在堆栈中,如下所示:

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

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

int p = &var;

地址是否像普通整数一样存储?持续的?类型依赖? (如果指针是char类型并且指向的值是int,gcc不会提示。为什么它会在1个字节中分配大数字?优化?

<小时/>

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

int num = 5;
char* p = &num;

p是指针,指针就是比较多的字节,可以表示这么大的地址。除此之外.. *p 是 char 并且不能表示比 256. 5 更大的数字。

最佳答案

它们也像普通整数一样存储。设盒子为每个 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 位架构。

关于c - 指针存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com