Обязательны ли скобки при объявлении указателя на массив? - PullRequest
3 голосов
/ 21 ноября 2011

Я просто смотрел на этот вопрос:

Как назначить многомерный массив временной переменной?

Решение получилось с использованием строк:

int a[3][2] = {{1, 2}, {11, 12}, {21, 22}};
...
int (*b)[2] = a;

для «назначения статически распределенного многомерного массива временной переменной».

Я немного озадачен синтаксисом строки:

int (*b)[2] = a;

В этом случае, требуются ли скобки для получения правильного эффекта, и если да, то почему? Есть ли способ получить тот же результат, не используя их?

1 Ответ

6 голосов
/ 21 ноября 2011

This:

int (*b)[2]

объявляет b как указатель на массив из двух int s.Это не то же самое, что:

int *b[2]

, который объявляет b как массив из двух указателей на int.

Вам необходима первая форма для правильного выполненияарифметика указателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...