在使用数组时,并尝试了这个程序:
#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
我为什么能够在任何不应该有大小的索引处访问一个空数组?
最佳答案
在你的代码中
printf ( "%d\n", a[0] );
printf ( "%d\n", a[1] );
printf ( "%d\n", a[10] );
printf ( "%d\n", a[100] );
产生undefined behaviour通过访问越界内存。
关于C:为什么我仍然可以访问空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033829/