双指针将 char 数组值分配给 char 数组,结构使用 char 指针

Posted

技术标签:

【中文标题】双指针将 char 数组值分配给 char 数组,结构使用 char 指针【英文标题】:Double pointer assigning char array value to char array, of structure using char pointer 【发布时间】:2015-10-26 16:49:20 【问题描述】:

我有这个函数,我试图将值分配给结构的成员。

  void Add(NodeDef **Head, char *Data)        
       ptrHead=(struct Node **)malloc(sizeof(struct Node));
         (*Head)->Data=*(Data);
           (*Head)->NextNode=NULL;

我这样称呼这个函数

for (i = 0; i < 5; i++)
    AddToLinkedList( &Head, iData[i].name);

iData 是一个将数据存储为字符串 (char iData[50]) 的结构的成员。

现在我收到类似

的错误
error: assignment to expression with array type
  (*Head)->Data=*(Data);

【问题讨论】:

请see why not to castmalloc()C中的family返回值。 你能出示iData[]的声明吗?我的猜测是您想将iData[i].name 中的字符串复制到(*Head)-&gt;Data,但这不是您复制字符串的方式。 可以用什么替代malloc() 【参考方案1】:

错误消息结构成员Data(*Head)-&gt;Data=*(Data); 中的类型为数组,您正在为其分配一个字符值。

既然你传递了name,那么你最想使用的是strcpy()那里:

     strcpy((*Head)->Data, Data);

或者如果你只想存储一个字符,那么你需要将结构中Data的类型从char[N]更改为char

另外,请参阅what's wrong with casting malloc's return value?

【讨论】:

以上是关于双指针将 char 数组值分配给 char 数组,结构使用 char 指针的主要内容,如果未能解决你的问题,请参考以下文章

C指针:指向一个固定大小的数组

Qt char 指针数组

在分配给指向固定数组的指针期间没有指针衰减

如何为C中的字符串数组赋值?

将 char 指针数组传递给函数

如何分配三维char指针数组?