问答详情
源自:5-1 Linux C 动态数据结构-静态链表

为什么p一进入循环就变成无效的指针了

#include <stdio.h>

#include <stdlib.h>



typedef struct weapon

{

char name;

int money;

struct weapon *next;

}lianbiao;


int main(void)

{

lianbiao a,b,c,*head;

lianbiao *p;


a.name = '1';

a.money = 1;

b.name = '2';

b.money = 2;

c.name = '3';

c.money = 3;

head = &a;

a.next = &b;

b.next = &c;

c.next = NULL;

p = head;

while(p!=NULL)//在这里就变成了无效的指针在之前p还正常

{

printf("%s,%d\n",p->name,p->money);

p->next;

}

system("pause");

return 0;

}


提问者:慕粉233007138 2017-08-05 21:32

个回答

  • Index303
    2020-12-13 20:04:23

    1. while循环结束时给p赋值应为p = p -> next

    2. p->name的数据类型为c,将%s改为%c即可

  • 爆炸帅气鄢
    2020-07-01 16:12:24

    倒数第五行p->next;改成p=p->next;

  • 慕圣6674348
    2017-08-07 09:27:01

    p->next;改为p=p->next  你需要重新把指针给p  %s改为%%c