以下是引用纯蓝之刃在2019-12-27 10:07:57的发言:
a[3]虽然是未定义行为,但是按照c标准,a[3]应该可读不可写,按照题中的操作,只是使用了读取的功能,应该不存在越界的问题,只是a[3]是随机的,题中也没有使用该值。
读取也不可以
对于 int a[3];
a[0], a[1], a[2] 可写,不可以读
当 a[0], a[1], a[2] 被赋值后,可读也可写
a[0], a[1], a[2], a[3] 可取地址
规则就是 a. 没初始化或赋值之前,不可读
b. 数组最后一个元素的后一个元素,不可以读写,但可取地址