在结构中的结构中打印数组的成员?

时间:2013-06-22 19:28:10

标签: c struct malloc fibonacci memoization

这里我有一个结构:

typedef struct Memo
{
// dynamically allocated HugeInteger array to store our Fibonacci numbers
    struct HugeInteger *F;

// the current length (i.e., capacity) of this array
    int length;

} Memo;

这是Memo结构中的struct HugeInteger *:

typedef struct HugeInteger
{
// a dynamically allocated array to hold the digits of a huge integer
    int *digits;

// the length of the array (i.e., number of digits in the huge integer)
    int length;
} HugeInteger;

我的问题是如何在Memo结构中访问Hugeinteger结构中的digits数组的成员?

我在整个代码中都按照这样的方式对所有三个进行了编码:

Memo *newMemo = malloc(sizeof(Memo));

newMemo->F = malloc(sizeof(HugeInteger) * INIT_MEMO_SIZE); //in this case 44

    for (i = 0; i < INIT_MEMO_SIZE; i++)
    {
    newMemo->F[i].digits = malloc(sizeof(int*) * 1); //creating an array of size 1 to test
    newMemo->F[i].digits = NULL;
    newMemo->F[i].length = 0;
    }

我试过例如......

newMemo->F[i].digits[0] = 1; 

...导致分段错误。如何正确实现上面的代码?我真的觉得我在这里缺少一些重要的东西。感谢。

1 个答案:

答案 0 :(得分:1)

这里有一个问题:

newMemo->F[i].digits = malloc(sizeof(int) * 1); //creating an array of size 1 to test
newMemo->F[i].digits = NULL;

(除了我修复的语法错误,我假设是复制/粘贴错误)上面的第二行替换了刚刚用NULL分配的内存地址。所以当你这样做时:

newMemo->F[i].digits[0] = 1;

您正在写入NULL地址。

您想省略NULL赋值。