我在初始化结构数组内的结构数组时遇到问题。例如,如果我有如下代码:
#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/