到目前为止,我已经有了下面的代码,我非常确定我可以使用多个语句进行显式初始化,但是我想学习如何使用单个语句进行初始化。

#include <stdio.h>
#include <stdlib.h>
#define LUNCHES 5

int main(void)
{
    struct Food
    {
        char *n;  /* “n” attribute of food */
        int w, c; /* “w” and “c” attributes of food */
    }

    lunch[LUNCHES],
    lunch[0] = {"apple pie", 4, 100},
    lunch[1] = {"salsa", 2, 80};
}

我想下面的方法行得通,但这是另一种说法。
 int main(void)
 {
     struct Food
     {
         char *n;  /* “n” attribute of food */
         int w, c; /* “w” and “c” attributes of food */
     }

     lunch[LUNCHES];
     lunch[0] = {"apple pie", 4, 100};
     lunch[1] = {"salsa", 2, 80};

最佳答案

你就快到了:

 = { [0] = {"apple pie", 4, 100}, [1] = {"salsa", 2, 80} }

将是数组的初始化。
只有当编译器支持C99附带的“指定”初始值设定项时,才会出现这种情况。
否则
 = { {"apple pie", 4, 100}, {"salsa", 2, 80} }

也可以。

09-30 19:28