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代码>作为别名typedefBook
的主要成员是谎言。如果您显示的(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));
| ^~~~~~
| ;