Я не понимаю, что это за тип данных
Если это утешит, ни автор книги, которую вы читаете.
Помните, q не указатель на целые числа, а скорее указатель на массив указателей на целые числа.
Это bullschildt .
- До настройки параметров,
q
- массив указателей на целые числа. - После настройки параметров,
q
- указатель на первый элемент массива указателей на целые числа.Эквивалентен int** q
, указателю на указатель на int
.
Нигде это не «указатель на массив указателей на целые числа».Это было бы int* (*q)[]
.
Я бы посоветовал прекратить чтение этой книги.
Ключ в том, что любой массив, который является частью списка параметров функции, корректируется («распадается») в указатель на первый элемент.Так что не имеет значения, если вы введете int* q[666]
или int* q[]
, либо будет тихо заменен компилятором с int**
«за чертой».
Это фактически причина, по которой мы можем написать[]
в списке параметров - обычно пустой массив представляет собой неполный тип, который нельзя использовать до завершения в другом месте.Но поскольку параметры всегда корректируются, они никогда не относятся к типу массива, и не имеет значения, что исходный тип был неполным.