1
有些人可能會澄清一些基本的C語言時刻。結構數組指針問題
struct key {
char *name;
int value;
};
struct key first_key_array[] = {
{"abc", 5},
{"xyz", 6},
{"def", 7}
};
struct key second_key_array[] = {
{"what", 200},
{"when", 300}
};
struct data {
struct key **key_array;
};
struct data all_key_arrays[] = {
{first_key_array},
{second_key_array}
};
我可以直接訪問first_key_array [0]:
printf("%s %d", first_key_array[0].name, first_key_array[0].value);
但通過all_key_arrays訪問不起作用:
printf("%s %d", all_key_arrays[0].key_array[0].name, all_key_arrays[0].key_array[0].value);
有人能分享任何想法?
「struct data all_key_arrays [] ='的初始化器格式不正確。你的編譯器應該告訴你這個。如果您沒有看到任何編譯器消息,那麼您需要弄清楚如何停止禁用編譯器的輸出消息。在嘗試運行程序之前,您需要修復編譯器消息。 –
修復將是'struct key ** key_array;'應該是'struct key * key_array;',雖然這個設計有一個問題,如果你通過'all_key_arrays'進入,那麼沒有辦法檢查你沒有通過它指向的任何地方結束訪問 –