c中定义变量的内存分配顺序问题(极易错!!!)

对于c语言中大家都知道所有的变量都必须是先定义后使用的,但是但是,对于好多人而言,基本上没有人(不管是老手还是菜鸟)来注意自己的编译器和操作系统对这个东西是如何处理的,


1,如果全是一样的类型,比如全是int(char,double,float),编译器会如何分配呢??是从大到小还是从小到大,,

2, 数组的分配方式和基本类型一样吗??编译器又是如何处理的??

3, 如果是基本类型和数组混合呢??

4,倘使是不同的操作系统呢,??它又有什么不同呢??


好了,接下来,我们大家一起看一看吧!!



(注意:下面我们的程序都是在:dev-C++ 5.11,  win7,32位的系统下运行的结果)

1.全是一样的类型

#include<stdio.h>
#include<conio.h>

int main(){
	
	int a;
	int b;
	int c;
	
	printf("a is ip:%p\n", &a);
	printf("b is ip:%p\n", &b);
	printf("c is ip:%p\n", &c);
	
	printf("nihao, mingtian");
	
	getch();
	return 0;
}

好,接下来我们看一看结果!


由图可知,我们的编译器和系统给它们分配的时候是,先找了一块空闲区,确定了之后,然后将高地址给了第一个定义的变量,将次高地址给了第二个变量,其他依次类推,可以得出,我们的地址分配是从高到底的!!



评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值