int a[2]={1210,15};
printf("%d",a[33] );
输出
1073828132
a[33]为什么即使数组元素不存在,当我尝试打印时它也不会抛出错误
因为C不做边界检查。
您将只是读取调用堆栈中的任意位置。
C 中的数组只是指针周围的一种语法糖。
int a[2]为 2 个 int 的数组创建空间并初始化。
但a[33]实际上*(a + 33),a只是用一个int *指向的第一个元素a。取消引用数组时,C 不关心数组初始化的大小。