我遇到了这段代码:
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结构的定义不应具有垃圾邮件**垃圾邮件;作为垃圾邮件成员的定义,因为我们稍后会存储一系列垃圾邮件?
答案 0 :(得分:1)
不,不应该。 SPAM
值的数组通过单个指针表示,因此SPAM *spams
是正确的。
getSPAMANDEGGS
函数的参数需要两个星号的原因是它设置从外部传递给它的指针:
EGG *eggArray; // First asterisk is due to *
int eggArraySize = getSPAMANDEGGS(&eggArray); // Second asterisk is due to &
如果没有&
运算符getSPAMANDEGGS
,则无法为eggArray
指针设置新值。