C 对动态结构进行动态分配';s元素

C 对动态结构进行动态分配';s元素,c,struct,dynamic,malloc,C,Struct,Dynamic,Malloc,我有这个结构: typedef struct { char name[50]; double cost; }Book; 我将它作为一个数组进行动态分配 我想说: typedef struct { char *name; double cost; }Book; 但是制作Books[count_row].name=(*Book.name)malloc((an_int)*sizeof(char))不是正确的方法,我找不到替代方法。 程序会出现如下错误: test

我有这个结构:

typedef struct 
{
    char name[50];
    double cost;
}Book;
我将它作为一个数组进行动态分配

我想说:

typedef struct 
{
    char *name;
    double cost;
}Book;
但是制作
Books[count_row].name=(*Book.name)malloc((an_int)*sizeof(char))不是正确的方法,我找不到替代方法。
程序会出现如下错误:

test.c: In function ‘main’:
test.c:58:34: error: expected expression before ‘Movie’
   58 |   (Movies[count_row2].name) = ((*Movie).name)malloc((name_let)*sizeof(char));
      |                                  ^~~~~
test.c:58:46: error: expected ‘;’ before ‘malloc’
   58 |   (Movies[count_row2].name) = ((*Movie).name)malloc((name_let)*sizeof(char));
      |                                              ^~~~~~
      |                                              ;

正确的语法是什么?

将malloc的返回转换为
char*
Books[count\u row].name=(char*)malloc((an\u int)*sizeof(char));
)正确的方法是意识到您正在进行转换,并且转换为类型而不是变量。更正确的做法是了解。。也不需要
sizeof(char)
,因为它总是1。简单地说:
malloc(一个int)
。更准确地说,
图书[count\u row].name=malloc(一个int)应该有用。@nicholai_-hel然后是你之前发布的代码片段,显示
char*name作为别名typedef
Book
的主要成员是谎言。如果您显示的(
name
是一个字符指针,而不是字符数组)是
Book
的别名,那么我显示的将起作用。
test.c: In function ‘main’:
test.c:58:34: error: expected expression before ‘Movie’
   58 |   (Movies[count_row2].name) = ((*Movie).name)malloc((name_let)*sizeof(char));
      |                                  ^~~~~
test.c:58:46: error: expected ‘;’ before ‘malloc’
   58 |   (Movies[count_row2].name) = ((*Movie).name)malloc((name_let)*sizeof(char));
      |                                              ^~~~~~
      |                                              ;