我试图用结构进行实验并想出一个问题当我这样做时,使用指针将数据分配给结构成员的字符数组,编译器会抛出错误:"赋值给表达式的数组类型& #34 ;.在我的代码中,我知道数组使用静态内存分配,而指针使用malloc进行动态内存分配。有些人可以告诉我如何解决这个问题。Code for passing the structure pointer to a function to print the structure data
答案 0 :(得分:1)
在您的示例中,'c'是一个20字节的数组,因此您可以使用strcpy:
strcpy(struct_pointer->c, "hellos");
答案 1 :(得分:1)
您的代码
struct_pointer->c="hellos"
实际上告诉编译器执行以下操作 - 为字符串"hellos"
加上空终止符分配内存,并将指向此内存的指针分配给已分配的struct_pointer->c
,因此编译器投诉完全有效。在C中你不能只将char数组分配给另一个数组,你需要使用任何类型的内存复制函数,例如
strcpy(struct_pointer->c, "hellos")
在我的代码中,我知道数组使用静态内存分配,指针使用malloc进行动态内存分配
它不是那样的,在C中你不会获得自动动态内存分配,除非你明确地调用malloc
或其变体。 "hellos"
的内存也分配在堆栈上
答案 2 :(得分:-1)
请记住" hellos"与char [20]的类型不同,所以你应该试试这个:
strcpy(struct_pointer->c, "hellos");
而不是将const char*
分配给char[20]
变量