#c #arrays #pointers
#c #массивы #указатели
Вопрос:
Для моего понимания указателей и массивов, если у меня есть 2d массив, подобный этому:
int arr[3][4];
Если мне нужно ссылаться на этот массив с помощью указателя, мне нужно объявить указатель следующим образом:
int (*ptr)[4];
ptr = arr;
или
int (*(*ptr)[3])[4];
ptr = amp;arr;
Второй подход выдает это предупреждение
initialization from incompatible pointer type [-Wincompatible-pointer-types]
Мне нужно знать, почему.
Спасибо
Комментарии:
1. Указатель на
arr
(тип, заданныйamp;arr
) имеет типint (*)[3][4]
.2. @Someprogrammerdude Да, предупреждение исчезло
3. Обратите внимание, что если вы намерены использовать
ptr
он таким же образом, какarr
(т. е. хотитеptr[x][y]
иметь то же значение, что иarr[x][y]
), то ваш первый подход является правильным.