This question already has answers here:
How to initialize a struct in accordance with C programming language standards

(16个答案)


6年前关闭。




这是我在其他人的问题中刚刚发现的初始化。
my_data data[]={
    { .name = "Peter" },
    { .name = "James" },
    { .name = "John" },
    { .name = "Mike" }
};

我以前从未见过这样的东西,也找不到解释说明.name如何正确。
我正在寻找的是此过程如何逐步进行。

它看起来像:
1) data;
2) *data;
3) (*data).name;
4) (*data).name="Peter";

还是我完全错了?

最佳答案

这里只有两种语法在起作用。

  • 普通旧数组初始化:
    int x[] = {0, 0}; // x[0] = 0, x[1] = 0
    
  • 一个指定的初始化程序。请参阅此问题的可接受答案:How to initialize a struct in accordance with C programming language standards

    语法是非常不言自明的。您可以这样初始化:
    struct X {
        int a;
        int b;
    }
    struct X foo = { 0, 1 }; // a = 0, b = 1
    

    或使用任何订购,
    struct X foo = { .b = 0, .a = 1 }; // a = 1, b = 0
    
  • 关于c - 初始化结构体数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18921559/

    10-11 22:22
    查看更多