变量在栈中的内存分配
#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;
}
输出: 0x7ffeeb157ac0
0x7ffeeb157a80
0x7ffeeb157aac
为什么第一种代码符合栈的从高到低内存分配,而第二种的内存分配方式这么奇怪?
#笔试题目#


