假设我有一个名为“Film”的结构和一个名为“Actor”的结构
typedef struct actor{
char *Name;
char *Surname;
int year_birth;
Title_Film * Film_recited;
}Actor;
typedef struct film{
Title_Film * Title; //pointer to structure
int year;
type genre; //enum
director * director_Film; //pointer to structure
//array of "Actor" structure
}Film;
我想在结构“电影”中插入结构“ Actor ”的数组,因为电影中有很多 Actor 。我可以做吗?怎么做?
最佳答案
首先,在定义影片之前需要先定义 Actor ,否则编译器不知道如何处理。
在电影结构中,只需声明指针,如下所示。
typedef struct actor{
char *Name;
char *Surname;
int year_birth;
Title_Film * Film_recited;
}Actor;
typedef struct film{
Title_Film * Title; //pointer to structure
int year;
type genre; //enum
director * director_Film; //pointer to structure
//array of "Actor" structure
Actor* cast;
}Film;
一旦你有了指针,你就需要计算出你将有多少个 Actor 。如果您有特定的实例,您可以提示此操作或将其硬编码到您的程序中。任何能让你的船漂浮的东西。
现在您知道了您的 Actor 有多大(假设您将其作为整数保存在变量castSize中,请分配内存:
movie.cast = (Actor*)malloc(sizeof(Actor)*castSize);
您现在可以像数组一样访问参与者列表,这将使您可以访问他们的属性。例如:
movie.cast[0]->Name = "Scarlet";
movie.cast[0]->Surname = "Johansson";
movie.cast[0].year_birth = 1984;
关于c - 如何在结构中包含结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38020381/