结构数组指针问题

时间:2016-03-02 21:00:12

标签: c pointers struct

可能会有些人澄清一些基本的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); 

有人可以分享任何想法吗?

1 个答案:

答案 0 :(得分:1)

尝试将 all_key_arrays 的初始值设定项更改为:

struct data all_key_arrays[] = {
    first_key_array,
    second_key_array
};

struct data all_key_arrays[] = {
    &first_key_array[0],
    &second_key_array[0]
};

解释 - all_key_arrays 是一个数组指针,因此初始化数组的值应该是指针。