我刚刚阅读了GMP(一个bignum图书馆)文档.它似乎能够修改函数的参数.例如,初始化整数的工作方式如下:
mpz_t integer;
mpz_init(integer);
// ... Do some stuff
mpz_clear(integer);
Run Code Online (Sandbox Code Playgroud)
mpz_init为整数分配内存,mpz_clear释放它.如果你必须传递一个指针,你可以修改函数参数(mpz_init(&integer)),但似乎这没有传递指针.这是如何运作的?
参考这个来源
为了兴趣,GMP类型
mpz_t等被实现为某些结构的单元素阵列.这就是为什么声明变量会创建一个具有GMP需要的字段的对象,但是然后将其用作参数会传递指向该对象的指针.
mpz_t在gmp.h文件中定义为
typedef struct
{
//struct body
} __mpz_struct;
typedef __mpz_struct mpz_t[1];
Run Code Online (Sandbox Code Playgroud)
所以,基本上mpz_t类型是一个数组(结构)类型.请记住,数组在传递给函数时会衰减指向其第一个元素.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |