定义整型变量时内存空间分配是否连续

#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分配的空间不在紧接着数组?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^