变量在栈中的内存分配

#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

为什么第一种代码符合栈的从高到低内存分配,而第二种的内存分配方式这么奇怪?

#笔试题目#
全部评论
有大佬嘛
点赞 回复 分享
发布于 2019-09-03 11:53
点赞 回复 分享
发布于 2019-09-03 11:53
栈里的内存分配只知道简单的从高到低,具体是啥样子饿
点赞 回复 分享
发布于 2019-09-03 10:48
求大佬解惑!!!
点赞 回复 分享
发布于 2019-09-03 10:46

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务