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
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
}
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
}
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
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
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.
}
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;
}
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.