变量在栈中的内存分配
#include <stdio.h> void fun(int e){ int a = 0; int b[1]; int c = 1; printf("%p\n", &a); printf("%p\n", b); printf("%p\n", &c); } int main(){ int e; scanf("%d", &e); fun(e); return 0; } 输出:0x7ffee1962ac8
0x7ffee1962ac4
0x7ffee1962ac0
------------------------分割线----------------------- #include <stdio.h> void fun(int e){ int a = 0; int b[e]; int c = 1; printf("%p\n", &a); printf("%p\n", b); printf("%p\n", &c); } int main(){ int e; scanf("%d", &e); fun(e); return 0; } 输出: 0x7ffeeb157ac00x7ffeeb157a80
0x7ffeeb157aac
为什么第一种代码符合栈的从高到低内存分配,而第二种的内存分配方式这么奇怪?
#笔试题目#