在玩数组时,尝试使用这个程序:
#include <stdio.h>
int main ( void )
{
int a[] = {};
printf ( "%d\n", sizeof(a) );
printf ( "%d\n", a[0] );
printf ( "%d\n", a[1] );
printf ( "%d\n", a[10] );
printf ( "%d\n", a[100] );
}
不知何故,它成功编译而没有错误得到了这个结果:
0
-1216614400
134513834
-1080435356
-1080430834
为什么我能够在任何没有大小的索引处访问空数组?
答案 0 :(得分:0)
在您的代码中
printf ( "%d\n", a[0] );
printf ( "%d\n", a[1] );
printf ( "%d\n", a[10] );
printf ( "%d\n", a[100] );
通过访问超出范围的内存来生成undefined behaviour。