Массив указателей C - PullRequest
       2

Массив указателей C

6 голосов
/ 20 января 2012

При создании массива указателей в c, что делает эффект добавления скобок?

Например

int (*poi)[2];

против

int *poi[2];

Ответы [ 3 ]

8 голосов
/ 20 января 2012

Указатель на массив из 2 int с:

int (*poi)[2];

Массив из двух int указателей:

int *poi[2];

Обычно массив имеет более высокий приоритет, чем указатель, но если вы добавите скобки, указатель будет «первым».

2 голосов
/ 20 января 2012

Оператор индекса [] связывает сильнее, чем оператор разыменования *.

int *poi[2]

означает:

Если вы видите poi , примените [x], затем разыменяем результат через *, и вы получите int.Таким образом, это массив из 2 указателей на int.

В

int (*poi)[2]

парантезы заставляют * быть примененным первым.Таким образом, в любое время используется poi , если сначала применить *, а затем [x], вы получите int.Так что это указатель на массив 2 int.

0 голосов
/ 20 января 2012

Скобки связывают сильнее, чем *, поэтому первый - это массив указателей int, а второй - указатель на массив целых чисел.

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