2016-06-29 43 views
-1

我正在尝试使用结构进行实验并提出了一个问题当我使用指针将数据分配给结构成员的字符数组时,编译器将引发错误:“赋值给数组类型”。在我的代码中,我知道一个数组使用静态内存分配和指针使用malloc进行动态内存分配。有人可以告诉我如何解决这个问题。 Code for passing the structure pointer to a function to print the structure data使用指针将数据分配给结构成员的字符数组

回答

0

在你的榜样“C”是20个字节数组,所以你可以使用的strcpy:

strcpy(struct_pointer->c, "hellos"); 
-1

请记住,“打着招呼”是不是同一类型的使用char [20],所以你应该试试这个:

strcpy(struct_pointer->c, "hellos"); 

,而不是分配的const char*char[20]可变

0

你的代码

struct_pointer->c="hellos" 

实际上告诉编译器做到以下几点 - 分配内存串"hellos"加空终止和指向此内存分配给struct_pointer->c,这已经是分配的,因此编译器的抱怨是完全有效的。在C你不能只指定一个字符数组到另一个数组,你需要使用任何类型的存储复制功能,例如

strcpy(struct_pointer->c, "hellos") 

In my code I know that an array uses static memory allocation and pointer uses malloc for dynamic memory allocation

这不是那样的,在C你没有得到自动动态内存分配,除非您明确地调用malloc或其变体。内存"hellos"也分配在堆栈