由于函数栈内存分配顺序真是方向不同,容易出错,所以运行一下程序特意证明了一下。直接上程序,程序很简单。
#include<stdio.h>
int main(void)
{
int a;
int b;
char buf[4];
printf("&a:%p\n",&a);
printf("&b:%p\n",&b);
printf("buf的地址:%p\n",&buf[0]);
printf("buf+1地址:%p\n",&buf[1]);
printf("buf+2地址:%p\n",&buf[2]);
printf("buf+3地址:%p\n",&buf[3]);
printf("buf+4地址:%p\n",&buf[4]);//故意越界数组去访问。
return 0;
}
&a:0018FF44
&b:0018FF40
buf的地址:0018FF3C
buf+1地址:0018FF3D
buf+2地址:0018FF3E
buf+3地址:0018FF3F
buf+4地址:0018FF40
总结: