Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我有一个struct元素,我想将元素数据(在所有字段中)复制到另一个元素。
所以如果这是结构
这是我的复制功能:
-我的问题:
为什么我在malloc上收到此错误?
这是正确的方法吗?我要去
我应该在newMember.path = malloc(sizeof(member.path))上使用malloc
在所有其他领域也是如此?
编辑以解释为什么我的问题与在struct中使用typedef不同的原因,因为系统认为这是一个重复的问题:正如我在C语言中所理解的那样,这是完全不同的问题。我问过关于复制元素而不是在typedef上的问题:
谢谢
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我有一个struct元素,我想将元素数据(在所有字段中)复制到另一个元素。
所以如果这是结构
struct Node{
char* name;
char type;
char* path;
};
这是我的复制功能:
struct Node Node_cp(struct Node member)
{
struct Node NewMember;
NewMember=malloc(sizeof(struct Node))
//**Here i get error : Assigning to struct Node from incompatible type void* (why ?)**
NewMember.name=member.name;
NewMember.type=member.type;
NewMember.path=member.path;
return NewMember;
}
-我的问题:
为什么我在malloc上收到此错误?
这是正确的方法吗?我要去
我应该在newMember.path = malloc(sizeof(member.path))上使用malloc
在所有其他领域也是如此?
编辑以解释为什么我的问题与在struct中使用typedef不同的原因,因为系统认为这是一个重复的问题:正如我在C语言中所理解的那样,这是完全不同的问题。我问过关于复制元素而不是在typedef上的问题:
谢谢
最佳答案
malloc
返回指向内存中空间的指针。您正在尝试将其分配给非指针类型。 NewMember
已经分配了空间(在此功能范围内)。要“修复”它,请更改NewMember
的类型。struct Node * NewMember = malloc(sizeof(struct Node));
旁注:您将希望此函数返回一个指针,或者应将其传递给两个指向struct Node
的指针,其中一个参数为src
另一个为dest
,类似于memcpy
的概念。我之所以这样说是因为NewMember
离开作用域后,访问返回值是未定义的行为。
函数的后半部分也会遇到问题-请务必对其进行修改,并搜索如何正确地在C语言中复制字符串之类的内容。
10-06 00:49