您可以将GMP变量'mpz_t n'初始化为mpz_init(n).
文档sais'void mpz_inits(mpz_t x,...)初始化一个以NULL结尾的mpz_t变量列表,并将它们的值设置为0.
我不确定这里的"以NULL结尾的列表"是什么意思.
mpz_t a, b, c;
mpz_inits(a, b, c, NULL);
Run Code Online (Sandbox Code Playgroud)
以上是初始化a,b和c的正确方法吗?
是的,这是正确的.
在C中,变量函数(例如mpz_inits)没有隐含的方式来知道传递了多少个参数.不同的功能以不同的方式实现.例如,该*printf族使用格式字符串来确定额外参数的数量/类型.在其他情况下,例如mpz_inits,它们使用NULL终止符来标记列表的结尾(与空字符\0标记字符串结尾的方式非常相似).
NULL终止只是意味着一个否则不确定长度的列表的结尾用NULL参数表示.