#include <stdio.h>
int main(){
int a[10],i;
for(int i=0;i<= 9;i++)
printf("&a[%d]=%-8d\n",i,&a[i]);
printf("&a[10]=%d\n",&a[10]);
printf("&i=%d\n",&i);
return 0;
}
/*
输出结果:
&a[0]= 6356688
&a[1]= 6356692
&a[2]= 6356696
&a[3]= 6356700
&a[4]= 6356704
&a[5]= 6356708
&a[6]= 6356712
&a[7]= 6356716
&a[8]= 6356720
&a[9]= 6356724
&a[10]= 6356728
&i= 6356728
*/
可以证明a[10]时数组越界,和i表示同一块内存空间,即i分配的空间紧接着数组。
#include <stdio.h>
int main(){
int a[10],i;
float b,c;
printf("&a[10]=%9d\n",&a[10]);
printf("&i=%9d\n",&i);
printf("&b=%9d\n",&b);
printf("&c=%9d\n",&c);
return 0;
}
/*
&a[10]= 6356720
&i= 6356728
&b= 6356724
&c= 6356720
*/
为什么在原来的基础上面额外定义两个实型变量b,c之后,i分配的空间不在紧接着数组?
不知道你这个问题是否已经解决, 如果还没有解决的话: