Hogyan lehet ellenőrizni a nullát C -ben: 7 lépés (képekkel)

Tartalomjegyzék:

Hogyan lehet ellenőrizni a nullát C -ben: 7 lépés (képekkel)
Hogyan lehet ellenőrizni a nullát C -ben: 7 lépés (képekkel)

Videó: Hogyan lehet ellenőrizni a nullát C -ben: 7 lépés (képekkel)

Videó: Hogyan lehet ellenőrizni a nullát C -ben: 7 lépés (képekkel)
Videó: Эта волшебная текстура создает эффект выгравированных денег в Photoshop! 2024, Lehet
Anonim

A C -ben a NULL egy szimbolikus állandó, amely mindig egy nem létező pontra mutat a memóriában. Bár sok programozó 0 -val egyenlőnek tekinti, ez egy egyszerűsítés, amely később felbosszanthat. A legjobb, ha közvetlenül a NULL ellenében ellenőrzi a mutatóit, és más kontextusokban 0 -t használ. Így a kódja tisztán és könnyen érthető marad, mivel minden alkalommal, amikor NULL -t lát, tudni fogja, hogy mutatókkal dolgozik.

Lépések

Rész 1 /2: Null ellenőrzés végrehajtása

Ellenőrizze a Null értéket a C lépésben 1
Ellenőrizze a Null értéket a C lépésben 1

1. lépés. Használja a standard null ellenőrző kódot

Az alábbiakban a legnyilvánvalóbb módon írhatunk null csekket. Mi használni fogjuk ptr ebben a cikkben az ellenőrzött mutató neve.

  • ha (ptr == NULL)

    {

    // kód, ha a mutató NULL

    } más {

    // kód, ha nem NULL

    }

Ellenőrizze a Null értéket a C lépésben 2
Ellenőrizze a Null értéket a C lépésben 2

Lépés 2. Ellenőrizze a NULL értéken kívüli értékeket

Időnként kényelmesebb az egyenlőtlenség tesztelése. Itt nincs meglepetés:

  • if (ptr! = NULL) {

    // kód, ha nem NULL

    }

Ellenőrizze a Null értéket a C lépésben
Ellenőrizze a Null értéket a C lépésben

3. lépés: A hibák elkerülése érdekében először írja be a NULL értéket (opcionális)

A PTR == NULL módszer fő hátránya, hogy véletlenül beírja a ptr = NULL parancsot, és hozzárendeli a mutatóhoz a NULL értéket. Ez komoly fejfájást okozhat. Mivel az (egyenlőtlenség) tesztelése szimmetrikusan kezeli az operandusokat, írással pontosan ugyanazt az eredményt kaphatja ha (NULL == ptr) helyette. Ez jobban ellenáll a gépelési hibáknak, mivel a véletlen NULL = ptr egyszerű fordítási hibát hoz létre.

Ez néhány programozó számára kissé kínosnak tűnik, de tökéletesen érvényes. Az, hogy melyik módszert használja, csak személyes preferenciáktól függ, és attól, hogy a fordító mennyire tudja észlelni az if (ptr = NULL) hibát

Ellenőrizze a Null értéket a C lépésben 4
Ellenőrizze a Null értéket a C lépésben 4

4. lépés Ellenőrizze, hogy a változó igaz -e

Egy egyszerű ha (ptr) teszteli, hogy a ptr IGAZ -e. HAMIS értéket ad vissza, ha a ptr értéke NULL, vagy ha a ptr értéke 0. A megkülönböztetés sok esetben nem számít, de ne feledje, hogy ezek nem minden architektúrában azonosak.

Ennek a fordítottja az ha (! ptr), amely igaz értéket ad vissza, ha a ptr HAMIS.

2. rész 2: A hibák elkerülése

Ellenőrizze a Null értéket a C lépésben 5
Ellenőrizze a Null értéket a C lépésben 5

1. lépés Állítsa be a mutatót, mielőtt ellenőrizné a NULL értéket

Az egyik gyakori hiba azt feltételezni, hogy az újonnan létrehozott mutató NULL értékkel rendelkezik. Ez nem igaz. A hozzá nem rendelt mutató továbbra is egy memóriacímre mutat, csak nem az Ön által megadottra. Gyakori gyakorlat, hogy az újonnan létrehozott vagy újonnan felszabadított mutatókat NULL értékre állítja, hogy megbizonyosodjon arról, hogy véletlenül nem használja ezt a haszontalan címet.

  • Kerülje ezt a hibát:

    char *ptr;

    ha (ptr == NULL)

    {

    // Ez hamis eredményt ad vissza. A mutató érvényes értéket kapott.

    }

  • Ehelyett írja:

    char *ptr = NULL; // Ez a mutatót a NULL -hoz rendeli

    ha (ptr == NULL)

    {

    // Ez az IGAZ értéket adja vissza, ha a mutató nincs hozzárendelve.

    }

Ellenőrizze a nullát a 6. lépésben
Ellenőrizze a nullát a 6. lépésben

2. lépés. Ügyeljen a NULL -t visszakapó funkciókra

Ha egy függvény visszaadhatja a NULL értéket, gondolja át, hogy ez lehetséges -e, és hogy ez később problémákat okoz -e a kódban. Íme egy példa a malloc függvényre a null ellenőrzés használatával (ha (ptr)), hogy csak érvényes értékű mutatókat kezeljen:

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

    if (ptr) {

    int i;

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

    ptr = i;

    }

Ellenőrizze a Null értéket a C lépésben 7
Ellenőrizze a Null értéket a C lépésben 7

Lépés 3. Értsd meg, hogy a NULL 0, de mindig használd a NULL -ot a 0 helyett, ha mutatókkal dolgozol az egyértelműség kedvéért

Történelmileg a C a NULL -t 0 -nak (azaz 0x00 -nak) jelölte. Manapság ez kissé bonyolultabbá válhat, és operációs rendszertől függően változhat. Általában a NULL használatával ellenőrizheti a ptr == 0, de vannak olyan sarokesetek, amikor ez problémát okozhat. Talán még ennél is fontosabb, hogy a NULL használatával nyilvánvalóvá válik, hogy mutatókkal dolgozik más, a kódot olvasó emberek számára.

Tippek

Ezt a bejelentkezést ciklusok során ugyanúgy használhatja, mint bármely más: while (NULL == ptr) {

Ajánlott: