O
arr[0][X]
не произойдет доступ к arr[1][Y]
. И пока что только здравый смысл запрещает компиляторами делать на основе этого неочевидные оптимизации, вроде примера приведенного в чате выше, он может захотеть инициализировать нулем только arr[0]
, оставив arr[1]
неинициализированным, поскольку формально к arr[1]
в теле функции никто не мог обратиться через p
:void foo() {
int arr[3][5] = {0};
int * p = arr[0][0];
// use p
}