Было уже задано много вопросов о многомерных массивах C ++, хотя ни один из них не дал ни A) полного объяснения того, что я пытаюсь задать здесь, ни B) Возможно, я просто не понял этого.
Моя проблема:
int (*ip)[4];
У меня проблема с пониманием причины добавления скобок вокруг * ip в этой ситуации. Глядя на многомерные массивы:
int ia[3][4];
int *ip = &ia[2];
int *ip2[4] = &ia[2];
int (*ip3)[4] = &ia[2];
ip, ip2 и ip3 - все , предназначенные для указания на первый элемент массива в позиции ia [2].
- ia [2] это просто указатель на первый элемент этого массива, и поэтому & ia [2] это адрес этого указателя? Правильно?
- Мне кажется, можно использовать ip , поскольку он будет работать так же, как будет работать char * ... да? нет
- мне имеет смысл, что ip2 неверен. Для меня имеет смысл, что ip2 - это массив указателей, которые указывают на целочисленные значения, когда я хочу указатель на массив целых чисел.
- Я знаю, IP3 правильно. Зачем? Потому что в книге так сказано. Это действительно так. Я не понимаю значение брекетинга.
Так как скобки меняют вещи? Я действительно после концептуального объяснения здесь, чтобы я мог понять и использовать эту концепцию в будущем.
Еще раз спасибо за ваше время всем, и я все еще новичок здесь, поэтому, если есть что-то, что я могу сделать, чтобы улучшить свой вопрос, пожалуйста, дайте мне знать.