【问题标题】:Double pointer assigning char array value to char array, of structure using char pointer双指针将 char 数组值分配给 char 数组,结构使用 char 指针
【发布时间】: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()

标签: c arrays pointers struct singly-linked-list


【解决方案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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-06
    • 2011-04-02
    • 2021-01-26
    • 1970-01-01
    • 2018-04-05
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多