Я опубликовал этот 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 ** в параметрах функции и дают мне некоторую ссылку (возможно, из стандартных документов), которая доказывает, почему это так.