#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[1];
a[0]=1;
a[1]=2;
a[2]=3;
printf(" %d, %d, %d, %d, %d \n",a[0], a[1],
a[2], a[3],a[10]);
printf("%zd\n", sizeof(a));
}
#include <stdlib.h>
int main(void)
{
int a[1];
a[0]=1;
a[1]=2;
a[2]=3;
printf(" %d, %d, %d, %d, %d \n",a[0], a[1],
a[2], a[3],a[10]);
printf("%zd\n", sizeof(a));
}
运行结果:
4
说明C语言允许约界读写数据,但是这可能带来不可预料的后果!
对比
C++
1:C++只在初始化时进行越界检查。
2:对于运行时的数组访问,C++不检查是否越界。越界后是否出错只取决于访问的地址是否被映射或者分配。