c - 在结构体数组内初始化结构体数组

标签 c arrays structure

我在初始化结构数组内的结构数组时遇到问题。例如,如果我有如下代码:

#include <stdio.h>

int main() {

typedef struct {
    int a;
    int b;
    int c;
} FIRST_T;

typedef struct {
    int x;
    int y;
    int z;
    FIRST_T *p;
} SECOND_T;

FIRST_T p1[]={{1,2,3},{3,4,5},{6,7,8}};
FIRST_T p2[]={{4,5,6},{7,8,9}};

SECOND_T my_second[]=
{
{1,2,3,p1},
{4,5,6,p2}
};

}

如果我必须在第二个数组初始化部分本身中初始化第一个数组,那么我将如何编写 SECOND_T 的 typedef? 就像

SECOND_T my_second[]=
{
{1,2,3,{{1,2,3},{4,5,6},{7,8,9}}},
{4,5,6,{{1,1,1},{2,2,2}}}
};

那我的SECOND_T应该怎样呢?

我确信我不能将其定义为:

typedef struct {
    int x;
    int y;
    int z;
    FIRST_T p[]; //(I know its a blunder)
} SECOND_T;

请帮忙。

最佳答案

在 C 中不能定义无界数组的类型,必须指定维数。所以你要么这样做:

typedef strut {
    int x;
    int y;
    int z;
    FIRST_T f[SOME_VALUE];
} SECOND_T;

然后始终初始化SOME_VALUE成员数量,或者按照您的方式进行操作。

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

相关文章:

关于 posix 管道与内核 fd 表的混淆

c - 如何使其在动态规划中适用于 f[i] = max(f[i], f[i - 1] + f[i]) ?

javascript - 如何基于 javascript/typescript 中的另一个数组创建动态数组?

json - golang 嵌套结构和映射

c++ - 结构、函数和数组

C++ 将一个结构值复制到另一个

c - 我没有得到 C 程序所需的输出

c - 错误 : "invalid use of incomplete type ‘RSA {aka struct rsa_st}" in OpenSSL 1. 1.0

javascript - 在javascript中从文件加载二维数组

arrays - R 向量化数组数据操作