戥怠520 发表于 2017-3-16 15:16

c语言结构体问题

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct
{
        char *data;
        struct Node *next;
}Node;
void creat(Node* *L)
{
        *L->data="huguyguy";
}
void main()
{
        Node *p;
        p=(Node *)malloc(sizeof(Node));
        p->next =NULL;
        creat(&p);
        printf("%s\n",p->data );
}
哪里错了????????

苏紫方璇 发表于 2017-3-16 15:27

目测字符串不能这样赋值,未验证。

yemoon 发表于 2017-3-16 15:45

注意表达式优先级,->的优先级比*高,
*L->data="huguyguy";改成 (*L)->data="huguyguy";

苏紫方璇 发表于 2017-3-16 15:52

struct Node
{
        char *data;
        struct Node *next;
};
void creat(Node* *L)
{
        (*L)->data="huguyguy";
}
void main()
{
        Node *p;
        p = (Node *)malloc(sizeof(Node));
        p->next = NULL;
        creat(&p);
        printf("%s\n", p->data);
}

貌似这样就可以了

wjgen1998 发表于 2017-3-16 16:26

好好学习下

依旧沉沉 发表于 2017-3-16 16:32

都是技术行人才~

xiaofengzi 发表于 2017-3-16 16:36

你倒是把编译的错误显示出来啊,难不成让我们去运行编译去,好懒

malloc魁 发表于 2017-3-16 16:38

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct node
{
      char *data;
      struct node *next;
}Node;
void creat(Node* *L)
{
      (*L)->data="huguyguy";
}
int main()
{
      Node *p;
      p=(Node *)malloc(sizeof(Node));
      p->next =NULL;
      creat(&p);
      printf("%s\n",p->data );
      return 0;
}

devc++ 中运行通过,建议不清楚运算优先级的情况下加括号

zhchenyang 发表于 2017-3-16 16:40

就跟加减乘除一样,要看那个先运算
页: [1]
查看完整版本: c语言结构体问题