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 不关心数组初始化的大小。