c - 如何在结构中包含结构数组?

标签 c arrays structure

假设我有一个名为“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/

相关文章:

c - 内联汇编的两种形式

c - 是否可以检查您是否正在使用 Microsoft C 编译器构建 64 位?

c - sdl2 从 Linux 和 Windows 上的不同线程绘制

c - 如何使用结构将指针值从单独的函数传递回 main

c++ - 堆栈只会显示第一个值?

c - wchar_t 和多字节函数是 ANSI C 的一部分吗?

c++ - C++中的数组拆分

perl - 如何使用 Perl 将多维数组 (AoA) 添加到 Excel?

javascript - 如何使用数组变量更新对象值? (JavaScript)

c# - 将复杂的json反序列化为类似字典的结构