我有一段 C 语言的代码:
int q = 10;
int s = 5;
int a[3];
printf("Address of a: %d\n", (int)a);
printf("Address of a[1]: %d\n", (int)&a[1]);
printf("Address of a[2]: %d\n", (int)&a[2]);
printf("Address of q: %d\n", (int)&q);
printf("Address of s: %d\n", (int)&s);
输出结果是:
Address of a: 2293584
Address of a[1]: 2293588
Address of a[2]: 2293592
Address of q: 2293612
Address of s: 2293608
所以,我看到从 a
到 a[2]
,内存地址每增加4个字节。
但是从 q
到 s
,内存地址减少了4个字节。
我想知道两件事:
a[2]
和 q
内存地址之间发生了什么? 为什么存在很大的内存差异? (20字节)。注意: 这不是家庭作业的问题。我很好奇堆栈是如何工作的。谢谢你的帮助。