使用指针

时间:2016-06-29 08:37:58

标签: c arrays dynamic struct

我试图用结构进行实验并想出一个问题当我这样做时,使用指针将数据分配给结构成员的字符数组,编译器会抛出错误:"赋值给表达式的数组类型& #34 ;.在我的代码中,我知道数组使用静态内存分配,而指针使用malloc进行动态内存分配。有些人可以告诉我如何解决这个问题。Code for passing the structure pointer to a function to print the structure data

3 个答案:

答案 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]变量