1

首先,很抱歉,因为毫无疑问这些信息存在于 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 将由外部因素决定。

我应该在这里做些什么不同的事情?

4

1 回答 1

4

这部分不起作用 - 您正在执行两次取消引用,但顺序错误

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

需要是

(*info)[0].length = 100;
(*info)[1].length = 200;
于 2013-03-18T19:04:33.860 回答