Si të kontrolloni Null në C: 7 hapa (me fotografi)

Përmbajtje:

Si të kontrolloni Null në C: 7 hapa (me fotografi)
Si të kontrolloni Null në C: 7 hapa (me fotografi)

Video: Si të kontrolloni Null në C: 7 hapa (me fotografi)

Video: Si të kontrolloni Null në C: 7 hapa (me fotografi)
Video: Ja se si të shkruani shkronjën ë dhe ç shpejt dhe lehtë 2024, Mund
Anonim

Në C, NULL është një konstante simbolike që tregon gjithmonë për një pikë inekzistente në kujtesë. Edhe pse shumë programues e trajtojnë atë si të barabartë me 0, ky është një thjeshtim që mund t’ju shqetësojë më vonë. Bestshtë më mirë të kontrolloni direkt treguesit tuaj kundër NULL dhe të përdorni 0 në kontekste të tjera. Kjo e mban kodin tuaj të pastër dhe të lehtë për t'u kuptuar, pasi do të dini që po punoni me tregues sa herë që shihni NULL.

Hapa

Pjesa 1 nga 2: Kryerja e një Kontrolli Null

Kontrolloni Null në C Hapi 1
Kontrolloni Null në C Hapi 1

Hapi 1. Përdorni kodin standard të kontrollit null

Më poshtë është mënyra më e qartë për të shkruar një kontroll null. Ne do të përdorim ptr në këtë artikull si emri i treguesit që po kontrolloni.

  • nëse (ptr == NULL)

    {

    // kodi nëse treguesi është NULL

    } tjetër {

    // kodi nëse jo NULL

    }

Kontrolloni Null në C Hapi 2
Kontrolloni Null në C Hapi 2

Hapi 2. Testoni për çdo vlerë përveç NULL

Ndonjëherë është më i përshtatshëm për të provuar pabarazinë në vend. Këtu nuk ka surpriza:

  • nëse (ptr! = NULL) {

    // kodi nëse jo NULL

    }

Kontrolloni Null në C Hapi 3
Kontrolloni Null në C Hapi 3

Hapi 3. Shkruani NULL së pari për të shmangur gabimet (opsionale)

Disavantazhi kryesor i metodës PTR == NULL është shansi që ju rastësisht të shtypni ptr = NULL në vend, duke i caktuar vlerën NULL atij treguesi. Kjo mund të shkaktojë një dhimbje koke të madhe. Meqenëse testimi për (jo) barazinë i trajton operandët në mënyrë simetrike, mund të merrni saktësisht të njëjtin rezultat duke shkruar nëse (NULL == ptr) në vend të kësaj. Kjo është më rezistente ndaj gabimeve shtypi, pasi një NULL = ptr aksidentale krijon një gabim të thjeshtë të përpilimit.

Kjo duket pak e vështirë për disa programues, por është krejtësisht e vlefshme. Cila qasje përdorni vetëm varet nga preferencat personale, dhe sa i mirë është përpiluesi juaj në zbulimin e gabimit if (ptr = NULL)

Kontrolloni Null në C Hapi 4
Kontrolloni Null në C Hapi 4

Hapi 4. Provoni nëse ndryshorja është e vërtetë

Një e thjeshtë nëse (ptr) teston nëse ptr është E VUERTET. Do të kthehet FALSE nëse ptr është NULL, ose nëse ptr është 0. Dallimi nuk ka rëndësi në shumë raste, por kini parasysh se këto nuk janë identike në të gjitha arkitekturat.

E kundërta e kësaj është nëse (! ptr), e cila do të kthehet TRUE nëse ptr është FALSE.

Pjesa 2 nga 2: Shmangia e Gabimeve

Kontrolloni Null në C Hapi 5
Kontrolloni Null në C Hapi 5

Hapi 1. Vendosni një tregues para se të kontrolloni për NULL

Një gabim i zakonshëm është të supozosh se një tregues i krijuar rishtas ka një vlerë NULL. Kjo nuk eshte e vertete. Një tregues i pacaktuar ende tregon një adresë memorie, jo vetëm atë që keni specifikuar. Practiceshtë praktikë e zakonshme të vendosni tregues të sapo krijuar ose të sapo liruar në NULL për t'u siguruar që nuk e përdorni këtë adresë të padobishme rastësisht.

  • Shmangni këtë gabim:

    char *ptr;

    nëse (ptr == NULL)

    {

    // Kjo do të kthejë FALSE. Treguesit i është caktuar një vlerë e vlefshme.

    }

  • Në vend të kësaj shkruani:

    char *ptr = NULL; // Kjo i cakton treguesin NULL

    nëse (ptr == NULL)

    {

    // Kjo do të kthehet TRUE nëse treguesi nuk është caktuar përsëri.

    }

Kontrolloni Null në C Hapi 6
Kontrolloni Null në C Hapi 6

Hapi 2. Kushtojini vëmendje funksioneve që mund të kthejnë NULL

Nëse një funksion mund të kthejë NULL, mendoni nëse kjo është një mundësi dhe nëse kjo do të shkaktonte probleme më vonë në kodin tuaj. Këtu është një shembull i funksionit malloc duke përdorur kontrollin null (nëse (ptr)) për të siguruar që trajton vetëm tregues me vlera të vlefshme:

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

    nëse (ptr) {

    int i;

    për (i = 0; i <N; ++ i)

    ptr = i;

    }

Kontrolloni Null në C Hapi 7
Kontrolloni Null në C Hapi 7

Hapi 3. Kuptoni që NULL është 0, por gjithmonë duhet të përdorni NULL në vend të 0 kur punoni me tregues për qartësi

Historikisht, C përfaqësonte NULL si numrin 0 (domethënë 0x00). Në ditët e sotme mund të bëhet pak më e komplikuar dhe ndryshon sipas sistemit operativ. Zakonisht mund të kontrolloni për NULL duke përdorur ptr == 0, por ka raste qoshe ku kjo mund të shkaktojë një problem. Ndoshta më e rëndësishmja, përdorimi i NULL e bën të qartë se po punoni me tregues për njerëzit e tjerë që lexojnë kodin tuaj.

Këshilla

Ju mund ta përdorni këtë kontroll në sythe ashtu si çdo tjetër: ndërsa (NULL == ptr) {

Recommended: