程序代码如下:
#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是在代码的全局变量区保存的。
转载请注明原文地址: https://ju.6miu.com/read-21098.html