c++数组越界的问题,在循环内

想请问一下大家,定义了一个二维数组,行数不定。我选用了n=3。也就是外循环执行三次该循环就停止。
这是代码。

img

但是为什么在n>=3的时候就会报错,

img


说数组访问越界呢?我不是已经让循环最多执行3次就停止了吗.那数组越界又从何而来呢?
经过调试,只要把a【】【4】前面的空格换成a【1000】【4】就不会报错,也就是只要我数组定义的行数>n就不会报错,这是什么原因呢?我的循环明明只要执行三次呀?

int arr[][4] = {0}是错的,你这么写,等于arr数组第一维是1,也就是只有1行。
因此改成int arr[1000][4]是正确的做法,定义数组第一维最大值是1000,确保输入的n有足够的行空间