Я опубликовал этот question на programers.stackexchange ранее сегодня. Я всегда предполагал, что int (*)[]
не распадается на int **
в функциональных параметрах, но я получил несколько ответов на мой вопрос, который предположил, что он это делает.
Я использовал int (*)[]
в моих функциональных параметрах, но теперь я действительно запутался.
Когда я скомпилирую эту функцию с помощью gcc -std=c99 -pedantic -Wall
void function(int (*a)[])
{
sizeof(*a);
}
Я получаю это сообщение об ошибке:
c99 -Wall -pedantic -c main.c -o main.o
main.c: In function ‘function’:
main.c:3:11: error: invalid application of ‘sizeof’ to incomplete type ‘int[]’
make: *** [main.o] Error 1
Из чего следует, что *a
имеет тип int []
, а не int *
.
Может кто-нибудь объяснить, если такие вещи, как int (*)[]
, распадается на int **
в параметрах функции и дают мне некоторую ссылку (возможно, из стандартных документов), которая доказывает, почему это так.