在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C/ C語言鏈表哪里錯(cuò)了總是不知道再怎么改?

C語言鏈表哪里錯(cuò)了總是不知道再怎么改?

#include<stdio.h>
#include<stdlib.h>
struct student {
    int num;//數(shù)據(jù)域
    struct student *next;//指針域
};
struct student *crea(int n)
{
    struct student *head, *pa, *pb;
    int i;
    head = NULL;
    for (i = 0; i < n; i++)
    {
        pb = (struct student*)malloc(sizeof(struct student));
        if (pb == NULL)
        {
            printf("第%d個(gè)學(xué)生內(nèi)存創(chuàng)建失敗!", i + 1);
            break;
        }
    }
    printf("輸入學(xué)號:");
    pb = head;
    scanf_s("%d", &pb->num);
    if (i == 0)
    {
        head = pb;
        pa = pb;
    }
    return head;
}
void  print(struct student *head)
{
    struct student *p = head;
    while(p != NULL)
    {
        printf("學(xué)號:%d", p->num);
        p = p->next;
    }
}
int main()
{
    struct student *head = crea(1);
    print(head);
    system("pause");
    return 0;
}

照片總是沒辦法上傳不知道怎么回事
提示說使用了可能未初始化的本地指針變量pb

回答
編輯回答
笑浮塵
  1. 把格式改好,segmentfault 使用 markdown 語法,代碼可以使用 包括起來
  2. 請指出你是出了什么錯(cuò)。是編譯不通過還是運(yùn)行出了錯(cuò):如果是編譯出錯(cuò),請將編譯器提示的錯(cuò)誤信息貼出來;如果是運(yùn)行出錯(cuò),請將你的輸入(如果有)和期望輸出貼出來
  3. 編譯器提示你可能使用了未初始化的變量(這個(gè)編譯器不錯(cuò)),是因?yàn)?for 循環(huán)可能不執(zhí)行(比如 n = 0 的時(shí)候),下面 pb = head,因?yàn)?head 也沒有初始化,所以下面 scanf 的時(shí)候也就使用了一個(gè) 未初始化的變量 pb
  4. 給你一個(gè)應(yīng)該是正確的寫法,和你的寫法對比一下
struct student *crea(int n)
{

    struct student *head = NULL, *pa = NULL, *pb;
    int i;
    for (i = 0; i < n; i++)
    {
        pb = (struct student*)malloc(sizeof(struct student));
        if (pb == NULL)
        {
            printf("第%d個(gè)學(xué)生內(nèi)存創(chuàng)建失敗!", i + 1);
            return NULL;    // 想想為什么這樣寫
        }
        printf("輸入學(xué)號:");
        scanf("%d", &pb->num);
        pb->next = NULL;
        if (head == NULL)
        {
            head = pb;
            pa = pb;
        }
        else
            pa->next = pb;
    }
    return head;
}
2017年9月5日 03:02