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'进入,那么没有办法检查你没有通过它指向的任何地方结束访问 –