c - 初始化结构数组

标签 c arrays dynamic struct initialization

我在用 C 语言初始化结构数组时遇到问题。 这是我的结构:

typedef struct Voie {
    int num;
    int sem_num[3];
    int crois[3];
} Voie;

这两个数组将包含 0、2 或 3 个整数。

我有一个包含 12 个“Voie”的数组:

Voie voies[12];

我希望每个参数都用这些参数初始化:

{1,{0,16,1},{4,7,8}}
{2,{2,3},{4,5}}
{3,{},{}}
{4,{4,17,5},{7,10,11}}
{5,{6,7},{7,8}}
{6,{},{}}
{7,{8,17,9},{10,1,2}}
{8,{10,11},{10,11}}
{9,{},{}}
{10,{12,16,13},{1,4,5}}
{11,{14,15},{1,2}}
{12,{},{}}

我曾尝试使用返回结构的函数,用开关分隔每个案例,但遇到了重新定义问题。 然后我发现我认为是最好的解决方案但仍然无法运行:

int cas[][] = { {1,{0,16,1},{4,7,8}},
                    {2,{2,3},{4,5}},
                    {3,{},{}},
                    {4,{4,17,5},{7,10,11}},
                    {5,{6,7},{7,8}},
                    {6,{},{}},
                    {7,{8,17,9},{10,1,2}},
                    {8,{10,11},{10,11}},
                    {9,{},{}},
                    {10,{12,16,13},{1,4,5}},
                    {11,{14,15},{1,2}},
                    {12,{},{}}  };

for (i=0 ; i<12 ; i++) {
    voies[i] = cas[i];
}

我什至不确定这是可能的,因为以下工作:

Voie v = {1,{0,16,1},{4,7,8}};

但不是以下内容:

int tab[] = {1,{0,16,1},{4,7,8}};
Voie v = tab;

另外:初始化后如何访问结构中的每个元素?

感谢您的帮助。

最佳答案

你可以简单地初始化你的数组:

编辑:

Voie voies[12] = { 
                {1,{0,16,1},{4,7,8}},
                {2,{2,3,},{4,5,}},
                {3,{0,},{0,}},
                {4,{4,17,5},{7,10,11}},
                {5,{6,7,},{7,8,}},
                {6,{0,},{0,}},
                {7,{8,17,9},{10,1,2}},
                {8,{10,11,},{10,11,}},
                {9,{0,},{0,}},
                {10,{12,16,13},{1,4,5}},
                {11,{14,15,},{1,2,}},
                {12,{0,},{0,}}  
};

关于c - 初始化结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30287280/

相关文章:

将非 null 终止的 char 数组的内容复制到另一个 char 数组中

c - 使用 malloc 时如何正确使用 free() 来释放内存?

javascript - 为什么传递给 for 循环内的函数的 'i' 等于大于 'i' 的数字?

ios - 如何断言函数返回数组

PHP搜索多维数组并返回键-超超大型变数组

c++ - 是否有一个库来解析 FTP LIST 命令的输出?

c - 打印最后一个环境的地址

arrays - 如何判断 Int 数组是否按降序排序?不要使用额外的内存

angular - 在 Angular 中动态使用 setValidators 后如何不丢失初始化的验证器?

javascript - 是否可以在 Javascript 中动态设置我想绑定(bind)的事件?