程序代码如下:
#include <stdio.h>
int main(){
int a[20],d[2],e[2],b[25];
char *g="nice to meet you";
printf("&a=%#X\n", a);
printf("&d=%#X\n", d);
printf("&e=%#X\n", e);
printf("&b=%#X\n", b);
printf("&g=%#X\n", &g);
return 0;
}
输出结果
&a=0X23B74080
&d=0X23B74060
&e=0X23B74070
&b=0X23B740D0
&g=0X23B74078
从结果中分析得出,C语言在函数分配内存时,编译器会先进行优化,根据每个变量预计所占的内存长度大小进行排序,然后按从小到大进行入栈处理
指针变量g值在栈中只分配一个字节,nice to meet you是在代码的全局变量区保存的。