在运行时在函数中创建结构数组

时间:2013-03-18 18:58:57

标签: c pointers

首先,道歉,因为毫无疑问,这些信息存在于SO上,但我无法追踪它。

尝试(并且失败)将我的大脑包裹在我希望做的一些指针魔法之外。在运行时,我想创建一个可以迭代的结构“数组”。

typedef struct  {
    int length;
    const char* location;
} receipt_info;

void testA()
{
    receipt_info *receipts;
    testB(&receipts);
    printf("Receipt 0 length: %i\n", receipts[0].length); // Displays valid value
    printf("Receipt 1 length: %i\n", receipts[1].length); // Displays invalid value
}

void testB(receipt_info **info)
{
    *info = malloc(sizeof(receipt_info) * 2);
    info[0]->length = 100;
    info[1]->length = 200;
}

在这个例子中,我将其硬编码为2,但IRL将由外部因素决定。

我应该在这里做些什么?

1 个答案:

答案 0 :(得分:4)

这部分不起作用 - 你正在进行两次解除引用,但顺序错误

info[0]->length = 100;
info[1]->length = 200;

需要

(*info)[0].length = 100;
(*info)[1].length = 200;