在C中使用struct指针进行数组赋值

时间:2014-04-19 13:41:57

标签: c arrays pointers struct

我需要保持动态的结构数组。

类型定义如下。我无法改变它们,因为它们是由一个名为flint的库(快速数理论库)提供的。

typedef struct
{
    mp_ptr coeffs;
    slong alloc;
    slong length;
    nmod_t mod;
} nmod_poly_struct;

typedef nmod_poly_struct nmod_poly_t[1];

我的结构定义如下:

typedef struct {
    mp_limb_t D;
    mp_limb_t length;
    nmod_poly_t *s;
} she_key_symmetric_t;

所以我的问题是持有一组nmod_poly_t对象。我初始化它们并希望将它们存储在数组中。

nmod_poly_t poly;
nmod_poly_init(poly);

she_key_symmetric_t key;
// init and stuff
key.s[0] = poly; // This line does not work, because 
// it always says "array type 'nmod_poly_t' (aka 
// 'nmod_poly_struct[1]') is not assignable"

在下一步中,我必须从数组中取回值

she_key_symmetric_t key;
// fully initialized key
nmod_poly_t poly = key.s[0]; 

那么我如何声明我的动态数组 s 来存储我的结构?

提前致谢

1 个答案:

答案 0 :(得分:1)

以下方法可行,假设已为key.s正确分配内存并初始化

nmod_poly_t poly; 
poly[0] =key.s[0][0];