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將由外部因素決定。
我應該在這裏改變什麼?
OT:爲什麼你的名字同樣的事情不同('收據'與'info')?這樣的名稱不會*可讀性地提高。堅持使用大寫的類型,並使用小寫變量。像'typedef ... Receipe_info;'它允許你使用像'Receipe_info receipe_info;'這樣的變量,甚至進一步指示像'Receipe_info * preceipe_info;'和'Receipe_info ** ppreceipe_info;'最後一條規則可能有幫助的指針你*通過查看你的代碼*看到*你的錯誤。 – alk 2013-03-18 19:11:36