C 在不传递指针的情况下修改函数的参数
我只是在读GMP(一个bignum库)。它似乎能够修改函数的参数。例如,初始化整数的工作方式如下:C 在不传递指针的情况下修改函数的参数,c,C,我只是在读GMP(一个bignum库)。它似乎能够修改函数的参数。例如,初始化整数的工作方式如下: mpz_t integer; mpz_init(integer); // ... Do some stuff mpz_clear(integer); mpz_init为整数分配内存,mpz_clear将其释放。如果必须传递指针,则可以修改函数参数(mpz_init(&integer)),但这似乎可以在不传递指针的情况下工作。这是如何工作的?指的是这个 出于兴趣,GMP类型mpz_t等被实现为特定
mpz_t integer;
mpz_init(integer);
// ... Do some stuff
mpz_clear(integer);
mpz_init
为整数分配内存,mpz_clear
将其释放。如果必须传递指针,则可以修改函数参数(mpz_init(&integer)
),但这似乎可以在不传递指针的情况下工作。这是如何工作的?指的是这个
出于兴趣,GMP类型mpz_t
等被实现为特定结构的单元素阵列。这就是为什么声明一个变量会创建一个带有GMP所需字段的对象,但使用它作为参数会传递一个指向该对象的指针
mpz\u t
在gmp.h
文件中定义为
typedef struct
{
//struct body
} __mpz_struct;
typedef __mpz_struct mpz_t[1];
因此,基本上,mpz_t
type是一种数组(结构)类型。请记住,数组在传递给函数时会衰减为指向其第一个元素的指针。引用此
出于兴趣,GMP类型mpz_t
等被实现为特定结构的单元素阵列。这就是为什么声明一个变量会创建一个带有GMP所需字段的对象,但使用它作为参数会传递一个指向该对象的指针
mpz\u t
在gmp.h
文件中定义为
typedef struct
{
//struct body
} __mpz_struct;
typedef __mpz_struct mpz_t[1];
因此,基本上,
mpz_t
type是一种数组(结构)类型。请记住,数组在传递给函数时会衰减为指向其第一个元素的指针。mpz\u t
可以是指针,也可以是内部保存指针的结构。mpz\u init
可能是类似函数的宏,而不是函数。mpz\u t
可以是指针,或者在内部保存指针的结构。mpz_init
可能是类似于宏的函数,而不是函数。