首先,道歉,因为毫无疑问,这些信息存在于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将由外部因素决定。
我应该在这里做些什么?
答案 0 :(得分:4)
这部分不起作用 - 你正在进行两次解除引用,但顺序错误
info[0]->length = 100;
info[1]->length = 200;
需要
(*info)[0].length = 100;
(*info)[1].length = 200;