定义指向结构数组的指针

时间:2018-05-10 00:39:39

标签: c pointers struct

我遇到了这段代码:

typedef struct {
    char *name;
    char *value;
} SPAM;

typedef struct {
    char *name;
    int num_spams;
    SPAM *spams;
} EGG;

SPAM my_spams[2] = {
    { "name1", "value1" },
    { "name2", "value2" },
};

EGG my_eggs[1] = {
    { "first egg", 1, my_spams }
};

EXPORT(int) getSPAMANDEGGS(EGG **eggs)
{
    *eggs = my_eggs;
    return 1;
}

在此声明中,EGG结构的定义不应具有垃圾邮件**垃圾邮件;作为垃圾邮件成员的定义,因为我们稍后会存储一系列垃圾邮件?

1 个答案:

答案 0 :(得分:1)

不,不应该。 SPAM值的数组通过单个指针表示,因此SPAM *spams是正确的。

getSPAMANDEGGS函数的参数需要两个星号的原因是它设置从外部传递给它的指针:

EGG *eggArray; // First asterisk is due to *
int eggArraySize = getSPAMANDEGGS(&eggArray); // Second asterisk is due to &

如果没有&运算符getSPAMANDEGGS,则无法为eggArray指针设置新值。