【发布时间】:2021-06-28 14:36:10
【问题描述】:
我们的老师要求我们制作一个视频俱乐部菜单,他给了我们这些结构供我们使用:
typedef struct date
{
int day, month, year;
}date;
typedef struct directorInfo
{
const char* directorSurname;
const char* directorName;
}directorInfo;
typedef struct movie
{
int id;
const char* title;
directorInfo* director;
date* releaseDate;
}movie;
我很困惑,我不知道如何分配其中的每一个。 这就是我所做的:
int main()
{
int totalMovies = 50;
movie *movie_ptr = (movie*)malloc( totalMovies * sizeof(movie) );
date *date_ptr = (date*)malloc( totalMovies * sizeof(date) );
directorInfo *directorInfo_ptr = (directorInfo*)malloc( totalMovies * sizeof(directorInfo) );
movie_ptr->title = (char*)malloc( 200 * sizeof(char) );
directorInfo_ptr->directorName = (char*)malloc( 200 * sizeof(char) );
movie_ptr[0].director->directorName = "John";
printf("%s", movie_ptr[0].director->directorName);
有没有更快、更专业的方法?我觉得这一切都错了,而且当我尝试打印 directorName 时它不会打印任何东西。 (我很抱歉这里的任何高级编码人员看到此代码并睁大眼睛)
【问题讨论】:
-
没有 typedef 结构这样的东西
-
为什么不呢? @user253751 我用过好几次了
-
这同样适用于 C++ 和 C:核心语言几乎不会为您做任何事情。您必须完成所有工作,并编写所有代码来完成它。 C 和 C++ 在某处都没有捷径,只需要使用它就可以使一切发生。如果您必须
malloc几个不同的对象,并且每个对象都有指针,而这些指针本身也必须依次为malloced,那么必须编写执行此操作的代码。 -
详细说明...“typedef struct”不是一个术语。它是两个连续的关键字,每个关键字都有自己的效果。任何一个的存在都不会影响另一个的行为。所以“typedef struct”没有传达任何有意义的东西。
-
通常你可以使用一个函数来为你做这件事(显然你必须自己写)