初始化作为结构数组索引的 C 结构

0 c arrays struct

我有这个结构:

typedef struct {
    char* name;
    int number;
} Customer;
Run Code Online (Sandbox Code Playgroud)

我也有一系列客户结构。我想用包含名称和数字的 Customer 结构初始化数组的每个索引。这是代码:

Customer* customerArray = malloc (5 * sizeof(Customer));
customerArray[0] = { "Name", 1 };
Run Code Online (Sandbox Code Playgroud)

我收到一个编译器错误,上面写着“预期的表达式”,没有别的。对于我尝试以这种方式初始化的每个数组索引,都会发生这种情况。但是,如果我这样做:

Customer myCustomer = { "Name", 1 };
Run Code Online (Sandbox Code Playgroud)

我没有收到编译器错误。为什么我仅在尝试初始化数组中的结构时才会收到此错误?

dbu*_*ush 5

此语法无效:

customerArray[0] = { "Name", 1 };
Run Code Online (Sandbox Code Playgroud)

因为这不是初始化而是赋值,而且一个花括号的值集只能在初始化时使用。

您可以单独设置每个字段:

customerArray[0].name = "Name";
customerArray[0].number = 1;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用复合文字进行分配:

customerArray[0] = (Customer){ "Name", 1 };
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用指定的初始值设定项:`customerArray[0] = (Customer){ .name = "Name", .number = 1 };` (2认同)