Если мы изменим размеры, чтобы было легче разместить:
#define M 2
#define N 3
Тогда графически переменная arr
будет примерно такой:
+-----+ +--------+--------+--------+--------+--------+--------+
| arr | ---> | [0][0] | [0][1] | [0][2] | [1][0] | [1][1] | [1][2] |
+-----+ +--------+--------+--------+--------+--------+--------+
arr
is указатель. Он указывает на массив массивов, где каждый элемент - это int
.
Это означает, что вы можете разыменовать arr
, чтобы получить то, на что он указывает, а затем использовать индексацию массива для получения int
value:
int value = (*arr)[0][1];
Теперь, если мы возьмем localArr
, это будет больше похоже на
+----------------+----------------+----------------+----------------+----------------+----------------+
| localArr[0][0] | localArr[0][1] | localArr[0][2] | localArr[1][0] | localArr[1][1] | localArr[1][2] |
+----------------+----------------+----------------+----------------+----------------+----------------+
localArr
- это массив массивов, где каждый элемент - int *
.
Итак, вам понадобится int *
, чтобы получить единственный элемент:
int *pointer = localArr[0][1];