Jinsi ya Kuangalia Null katika C: Hatua 7 (na Picha)

Orodha ya maudhui:

Jinsi ya Kuangalia Null katika C: Hatua 7 (na Picha)
Jinsi ya Kuangalia Null katika C: Hatua 7 (na Picha)

Video: Jinsi ya Kuangalia Null katika C: Hatua 7 (na Picha)

Video: Jinsi ya Kuangalia Null katika C: Hatua 7 (na Picha)
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Mei
Anonim

Katika C, NULL ni ishara ya mara kwa mara ambayo kila wakati inaelekeza kwenye hatua ambayo haipo kwenye kumbukumbu. Ingawa waandaaji wengi wanaichukulia kuwa sawa na 0, hii ni kurahisisha ambayo inaweza kukukwamua baadaye. Ni bora kuangalia viashiria vyako dhidi ya NULL moja kwa moja, na utumie 0 katika hali zingine. Hii inafanya nambari yako iwe safi na rahisi kueleweka, kwani utajua unafanya kazi na viashiria kila wakati unapoona NULL.

Hatua

Sehemu ya 1 ya 2: Kufanya hundi Null

Angalia Null katika C Hatua ya 1
Angalia Null katika C Hatua ya 1

Hatua ya 1. Tumia nambari ya kawaida ya kuangalia null

Ifuatayo ni njia dhahiri zaidi ya kuandika hundi isiyo na maana. Tutatumia ptr katika nakala hii kama jina la kiboreshaji unachoangalia.

  • ikiwa (ptr == NULL)

    {

    // nambari ikiwa pointer ni NULL

    } mwingine {

    // nambari ikiwa sio NULL

    }

Angalia Null katika C Hatua ya 2
Angalia Null katika C Hatua ya 2

Hatua ya 2. Jaribu kwa thamani yoyote lakini NULL

Wakati mwingine ni rahisi zaidi kujaribu ukosefu wa usawa badala yake. Hakuna mshangao hapa:

  • ikiwa (ptr! = NULL) {

    // nambari ikiwa sio NULL

    }

Angalia Null katika C Hatua ya 3
Angalia Null katika C Hatua ya 3

Hatua ya 3. Andika NULL kwanza ili kuepuka makosa (hiari)

Ubaya kuu kwa njia ya PTR == NULL ni nafasi ya kwamba kwa bahati utaandika ptr = NULL badala yake, ukipa thamani ya NULL kwa kielekezi hicho. Hii inaweza kusababisha maumivu ya kichwa. Kwa kuwa kupima kwa (katika) usawa hutendea operesheni kwa ulinganifu, unaweza kupata matokeo sawa kwa kuandika ikiwa (NULL == ptr) badala yake. Hii ni sugu zaidi ya typo, kwani ajali NULL = ptr inaunda kosa rahisi la kukusanya.

Hii inaonekana kuwa ngumu kidogo kwa waandaaji wengine wa programu, lakini ni halali kabisa. Njia gani unayotumia inategemea tu upendeleo wa kibinafsi, na jinsi mkusanyaji wako ni mzuri katika kugundua kosa la (ptr = NULL)

Angalia Null katika C Hatua ya 4
Angalia Null katika C Hatua ya 4

Hatua ya 4. Jaribu ikiwa tofauti ni kweli

Rahisi ikiwa (ptr) hujaribu ikiwa ptr ni KWELI. Itarudi UONGO ikiwa ptr ni NULL, au ikiwa ptr ni 0. Tofauti haijalishi katika visa vingi, lakini fahamu kuwa hizi hazifanani katika usanifu wote.

Kinyume cha hii ni ikiwa (! ptr), ambayo itarudi KWELI ikiwa ptr ni UONGO.

Sehemu ya 2 ya 2: Kuepuka Makosa

Angalia Null katika C Hatua ya 5
Angalia Null katika C Hatua ya 5

Hatua ya 1. Weka pointer kabla ya kuangalia NULL

Kosa moja la kawaida ni kudhani kuwa pointer iliyoundwa mpya ina thamani ya NULL. Hii sio kweli. Kielekezi ambacho hakijapewa bado kinaelekeza kwenye anwani ya kumbukumbu, sio moja tu ambayo umetaja. Ni mazoea ya kawaida kuweka viashiria vipya vilivyoundwa au vikiachiliwa huru kwa NULL kuhakikisha kuwa hutumii anwani hii isiyofaa kwa bahati mbaya.

  • Epuka kosa hili:

    char * ptr;

    ikiwa (ptr == NULL)

    {

    // Hii itarudi UONGO. Kielekezi kimepewa thamani halali.

    }

  • Badala yake andika:

    char * ptr = NULL; // Hii inapeana pointer kwa NULL

    ikiwa (ptr == NULL)

    {

    // Hii itarudi KWELI ikiwa kielekezi hakijapewa kazi nyingine.

    }

Angalia Null katika C Hatua ya 6
Angalia Null katika C Hatua ya 6

Hatua ya 2. Zingatia kazi ambazo zinaweza kurudi NULL

Ikiwa kazi inaweza kurudi NULL, fikiria ikiwa hii ni uwezekano, na ikiwa hiyo itasababisha shida baadaye kwenye nambari yako. Hapa kuna mfano wa kazi ya malloc kwa kutumia hundi batili (ikiwa (ptr)kuhakikisha kuwa inashughulikia viashiria tu vyenye maadili halali:

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

    ikiwa (ptr) {

    int i;

    kwa (i = 0; i <N; ++ i)

    ptr = i;

    }

Angalia Null katika C Hatua ya 7
Angalia Null katika C Hatua ya 7

Hatua ya 3. Elewa kuwa NULL ni 0 lakini unapaswa kutumia NULL kila wakati badala ya 0 wakati unafanya kazi na viashiria kwa ufafanuzi

Kihistoria, C iliwakilisha NULL kama nambari 0 (ambayo ni, 0x00). Siku hizi inaweza kuwa ngumu zaidi, na inatofautiana na mfumo wa uendeshaji. Kawaida unaweza kuangalia NULL ukitumia ptr == 0, lakini kuna kesi za kona ambapo hii inaweza kusababisha suala. Labda muhimu zaidi, kutumia NULL hufanya iwe dhahiri kuwa unafanya kazi na viashiria kwa watu wengine wanaosoma nambari yako.

Vidokezo

Unaweza kutumia hundi hii wakati unakua kama nyingine yoyote: wakati (NULL == ptr) {

Ilipendekeza: