错误:“ {”令牌|前的期望表达式

Roh*_*oel 5 c struct linked-list

  struct node{
        int data;
        struct node *next;
    };
main(){
    struct node a,b,c,d;
    struct node *s=&a;

    a={10,&b};
    b={10,&c};
    c={10,&d};
    d={10,NULL};


    do{
        printf("%d %d",(*s).data,(*s).next);

        s=*s.next;
    }while(*s.next!=NULL);

}
Run Code Online (Sandbox Code Playgroud)

它在a = {10,&b};表达语法错误处显示错误。请帮助..提前谢谢

Sou*_*osh 6

在定义时允许使用括号括起来的列表来初始化结构变量。使用

struct node a={10,&b};
Run Code Online (Sandbox Code Playgroud)

否则,您必须使用 复合文字[on and above c99]

a=(struct node){10,&b};
Run Code Online (Sandbox Code Playgroud)


小智 5

立即初始化变量:

struct node a={10,NULL};
Run Code Online (Sandbox Code Playgroud)

然后分配地址:

a.next = &b;
Run Code Online (Sandbox Code Playgroud)

或者使用复合文字:

a=( struct node ){10,&b};  //must be using at least C99
Run Code Online (Sandbox Code Playgroud)