怎么修改才不会报错 求快看看


#include <stdio.h>  
int main()
{
    struct person
    {
        char name[20];
        char address[30];
        int num[3][3];
        struct person*next;
    };
    struct person a = { "wang hong","shang hai",{0, 18,96} };
    /* 0表示女性,18表示年龄,96 表示某课程的成绩*/
    struct person b = { "li ming","tian jin ",{1, 23,99} };
    struct person c = { "chen lin","bei jing",{0, 21,90} };
    struct person* p;
    a.next = &b;
    b.next = &c;
    c.next = NULL;
    for (p = &a; p != NULL;p++)
        printf("%s,%s,%d,%d,%d\n",p->name, p->address, p->num, p->num,
             p->next);
    printf("\n");
    return 0;
}

修改处见注释,供参考:

#include <stdio.h>  
int main()
{
    struct person
    {
        char name[20];
        char address[30];
        int  num[3];   // num[3][3]  修改
        struct person* next;
    };
    struct person a = { "wang hong","shang hai",{0, 18,96} };
    /* 0表示女性,18表示年龄,96 表示某课程的成绩*/
    struct person b = { "li ming","tian jin ",{1, 23,99} };
    struct person c = { "chen lin","bei jing",{0, 21,90} };
    struct person* p;
    a.next = &b;
    b.next = &c;
    c.next = NULL;
    for (p = &a; p != NULL; p=p->next)  //for (p = &a; p != NULL; p++) 修改
        printf("%s,%s,%d,%d,%d\n", p->name, p->address, p->num[0], p->num[1],p->num[2]); // 修改
        //printf("%s,%s,%d,%d,%d\n", p->name, p->address, p->num, p->num,
           //p->next);
    printf("\n");
    return 0;
}

1.struct person要定义在函数外面,不要放到函数里面
2.你在给a,b,c赋初值的时候,没有给next传参
3.for循环里,应该写p=p->next,你这p++,指针都飞了

p++是不对的 应该p=p->next

img