Тип в основном непрозрачный, но документация дает некоторую полезную информацию.
В частности, это массив [1]
типа struct
. Это говорит нам о том, что вам не нужно вызывать функцию выделения для ее создания. Создание переменной создает хранилище, и вы можете создавать автоматические или статические переменные и знать, где они живут.
Вам нужно необходимо вызвать функцию mpz_init()
, чтобы инициализировать ее, но, будучи типом массива, она распадается на указатель в списке аргументов вызова функции. Это означает, что простая передача переменной (без &
) означает, что функция может изменить это хранилище. Таким образом, важно (только) обратить внимание на объявления const
в прототипах функций. Это один без const
, который во всех случаях является пунктом назначения .
Наличие типа массива также означает, что вы не можете скопировать значение mpz_t
с простым присваиванием, а скорее memcpy
или подобное. Потому что вы не можете копировать массивы по присваиванию.