我有這個變量:如何將元素添加到C中的char * var []?
char *var[] = {get_answer(answers, 0), get_answer(answers, 1)};
我想補充get_answer(answers, 2)
作爲var[]
的第三個元素,這是我曾嘗試:
var[2] = get_answers(answers, 2);
它似乎並沒有做任何事情。 我應該如何去追加元素到上述變量?
我有這個變量:如何將元素添加到C中的char * var []?
char *var[] = {get_answer(answers, 0), get_answer(answers, 1)};
我想補充get_answer(answers, 2)
作爲var[]
的第三個元素,這是我曾嘗試:
var[2] = get_answers(answers, 2);
它似乎並沒有做任何事情。 我應該如何去追加元素到上述變量?
根據您在初始化過程中提供的元素數自動確定數組var
的大小。它不會隨着您爲其分配更多元素而發生變化。所以,你不能在var[2]
分配。您可以使用malloc()
動態分配指針數組。或者在初始化期間提供更多的元素,比如NULL指針。或者明確提供數組的大小。
char *var[] = {get_answer(answers, 0), get_answer(answers, 1), NULL, NULL, NULL}; // 5 elements
或
char *var[10] = {get_answer(answers, 0), get_answer(answers, 1), NULL, NULL, NULL}; // 10 elements
的陣列定義爲:
char *var[] = {get_answer(answers, 0), get_answer(answers, 1)};
具有 「固定的」 大小兩個元素。它和你寫的一樣:
char *var[2] = {get_answer(answers, 0), get_answer(answers, 1)};
因此,沒有空間容納第三個元素。
有兩種基本選擇:
1)聲明var
與空間附加條目(或條目):
char *var[3] = {get_answer(answers, 0), get_answer(answers, 1)};
// ...
var[2] = get_answers(answers, 2);
2)用來初始化與第三元件到位:
char *var[] = {get_answer(answers, 0), get_answer(answers, 1), get_answers(answers, 2)};
1.您正在使用函數調用的結果初始化aray。初始化器是編譯時,所以這是行不通的(你的編譯器警告告訴你什麼?)2.即使如此,var只有兩個元素,所以你不能「追加」一個元素。你可以聲明var是3個元素。 –
您應該考慮使用可以動態添加元素的其他數據結構(即鏈接列表...)。 – b1sub