对于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;
}
好,接下来我们看一看结果!
由图可知,我们的编译器和系统给它们分配的时候是,先找了一块空闲区,确定了之后,然后将高地址给了第一个定义的变量,将次高地址给了第二个变量,其他依次类推,可以得出,我们的地址分配是从高到底的!!