Yuav Ua Li Cas Txheeb Null hauv C: 7 Cov Kauj Ruam (nrog Duab)

Cov txheej txheem:

Yuav Ua Li Cas Txheeb Null hauv C: 7 Cov Kauj Ruam (nrog Duab)
Yuav Ua Li Cas Txheeb Null hauv C: 7 Cov Kauj Ruam (nrog Duab)

Video: Yuav Ua Li Cas Txheeb Null hauv C: 7 Cov Kauj Ruam (nrog Duab)

Video: Yuav Ua Li Cas Txheeb Null hauv C: 7 Cov Kauj Ruam (nrog Duab)
Video: Musicians talk about Buckethead 2024, Tej zaum
Anonim

Hauv C, NULL yog lub cim tsis tu ncua uas ib txwm taw tes rau qhov tsis muaj nyob hauv lub cim xeeb. Txawm hais tias ntau tus programmer kho nws zoo ib yam li 0, qhov no yog qhov yooj yim uas tuaj yeem taug kev koj tom qab. Nws yog qhov zoo tshaj los tshuaj xyuas koj cov taw qhia tawm tsam NULL ncaj qha, thiab siv 0 hauv lwm lub ntsiab lus. Qhov no ua rau koj cov cai huv thiab nkag siab yooj yim, txij li koj yuav paub tias koj tab tom ua haujlwm nrog cov taw qhia txhua zaus koj pom NULL.

Cov kauj ruam

Ntu 1 ntawm 2: Ua Null Check

Kos Null hauv C Kauj Ruam 1
Kos Null hauv C Kauj Ruam 1

Kauj Ruam 1. Siv tus txheej txheem null check code

Nram qab no yog txoj hauv kev pom tseeb tshaj plaws los sau daim tshev. Peb mam siv ptr xab hauv kab lus no raws li lub npe ntawm tus pointer koj tab tom kuaj xyuas.

  • yog (ptr == NULL)

    {

    // chaws yog pointer yog NULL

    lwm yam {

    // code yog tsis yog NULL

    }

Txheeb Null hauv C Kauj Ruam 2
Txheeb Null hauv C Kauj Ruam 2

Kauj Ruam 2. Kuaj rau ib qho txiaj ntsig tab sis NULL

Qee zaum nws yooj yim dua los ntsuas qhov tsis sib xws hloov. Tsis muaj qhov xav tsis thoob ntawm no:

  • yog (ptr! = NULL) {

    // code yog tsis yog NULL

    }

Kos Null hauv C Kauj Ruam 3
Kos Null hauv C Kauj Ruam 3

Kauj Ruam 3. Sau NULL ua ntej kom tsis txhob yuam kev (yeem)

Qhov tsis zoo tseem ceeb rau PTR == NULL txoj hauv kev yog lub sijhawm uas koj yuav yuam kev ntaus ptr = NULL hloov chaw, muab tus nqi NULL rau tus pointer ntawd. Qhov no tuaj yeem ua rau mob taub hau loj. Txij li kev sim rau (hauv) kev vaj huam sib luag ua rau kev ua haujlwm sib luag, koj tuaj yeem tau txais qhov txiaj ntsig zoo ib yam los ntawm kev sau ntawv yog (NULL == ptr) es tsis txhob Qhov no yog qhov tiv taus ntau dua, txij li qhov xwm txheej NULL = ptr tsim qhov yooj yim suav sau yuam kev.

Qhov no zoo li ua tau txawv txawv me ntsis rau qee tus programmer, tab sis nws zoo siv tau. Txoj kev twg uas koj siv tsuas yog nyob ntawm tus kheej nyiam, thiab qhov zoo ntawm koj tus neeg sau ua ke yog txheeb xyuas qhov yog (ptr = NULL) yuam kev

Txheeb Null hauv C Kauj Ruam 4
Txheeb Null hauv C Kauj Ruam 4

Kauj Ruam 4. Kuaj seb qhov txawv txav puas muaj tseeb

Ib qho yooj yim yog tias (ptr) kuaj seb ptr puas yog TRUE. Nws yuav rov qab tsis raug yog ptr yog NULL, lossis yog ptr yog 0. Qhov sib txawv tsis txawv nyob rau ntau qhov, tab sis nco ntsoov tias cov no tsis zoo ib yam hauv txhua qhov kev tsim vaj tsev.

Qhov rov qab los ntawm qhov no yog yog (! ptr), uas yuav rov qab TSHUAJ yog ptr yog FALSE.

Ntu 2 ntawm 2: Zam Kev Ua Yeeb Yam

Kos Null hauv C Kauj Ruam 5
Kos Null hauv C Kauj Ruam 5

Kauj Ruam 1. Teeb tus pointer ua ntej tshuaj xyuas rau NULL

Ib qho kev ua yuam kev ib txwm yog xav tias tus tsim tshiab pointer muaj tus nqi NULL. Qhov no tsis muaj tseeb. Tus taw tes uas tsis tau teem tseg tseem taw tes rau qhov chaw nyob nco, tsis yog ib qho uas koj tau teev tseg. Nws yog ib qho kev coj ua los teeb tsa tshiab los yog tso tawm cov ntsiab lus tshiab rau NULL kom ntseeg tau tias koj tsis siv qhov chaw nyob tsis muaj txiaj ntsig los ntawm kev sib tsoo.

  • Zam qhov yuam kev no:

    char *ptr;

    yog (ptr == NULL)

    {

    // Qhov no yuav rov qab tsis raug. Tus taw qhia tau muab tus nqi siv tau.

    }

  • Xwb sau:

    char *ptr = NULL; // Qhov no qhia tus taw tes rau NULL

    yog (ptr == NULL)

    {

    // Qhov no yuav rov qab TSEEB yog tias tus taw qhia tsis tau rov ua haujlwm dua.

    }

Kos Null hauv C Kauj Ruam 6
Kos Null hauv C Kauj Ruam 6

Kauj Ruam 2. Ua tib zoo saib xyuas cov haujlwm uas tuaj yeem rov qab tau NULL

Yog tias muaj nuj nqi tuaj yeem rov qab NULL, xav txog seb qhov no puas muaj peev xwm ua tau, thiab seb qhov ntawd yuav ua teeb meem tom qab hauv koj cov cai. Nov yog ib qho piv txwv ntawm kev ua haujlwm malloc siv kev txheeb xyuas tsis raug (yog tias (ptr)) kom ntseeg tau tias nws tsuas yog ua haujlwm taw qhia nrog qhov muaj txiaj ntsig zoo:

  • int * ptr = malloc (N * sizeof (int));

    yog (ptr) {

    koj i;

    rau (kuv = 0; kuv <N; ++ kuv)

    ptr [tau] = i;

    }

Txheeb Null hauv C Kauj Ruam 7
Txheeb Null hauv C Kauj Ruam 7

Kauj Ruam 3. Nkag siab tias NULL yog 0 tab sis koj yuav tsum siv NULL tsis yog 0 thaum ua haujlwm nrog cov taw qhia kom pom tseeb

Keeb kwm, C sawv cev rau NULL raws li tus lej 0 (uas yog, 0x00). Niaj hnub no nws tuaj yeem nyuaj me ntsis, thiab txawv ntawm kev ua haujlwm. Feem ntau koj tuaj yeem tshawb xyuas rau NULL siv ptr = np, tab sis muaj cov xwm txheej kaum uas qhov no tuaj yeem ua teeb meem. Tej zaum qhov tseem ceeb dua, siv NULL ua rau pom tseeb tias koj tab tom ua haujlwm nrog cov taw qhia rau lwm tus neeg nyeem koj cov cai.

Lub tswv yim

Koj tuaj yeem siv qhov kev txheeb xyuas no thaum lub loops zoo ib yam li lwm yam: thaum (NULL == ptr) {

Pom zoo: