Kuinka tarkistaa nolla C: ssä: 7 vaihetta (kuvilla)

Sisällysluettelo:

Kuinka tarkistaa nolla C: ssä: 7 vaihetta (kuvilla)
Kuinka tarkistaa nolla C: ssä: 7 vaihetta (kuvilla)

Video: Kuinka tarkistaa nolla C: ssä: 7 vaihetta (kuvilla)

Video: Kuinka tarkistaa nolla C: ssä: 7 vaihetta (kuvilla)
Video: Viisi Android vinkkiä - Näin käytät puhelintasi yksinkertaisemmin 2024, Saattaa
Anonim

C: ssä NULL on symbolinen vakio, joka viittaa aina muistin olemattomaan pisteeseen. Vaikka monet ohjelmoijat pitävät sitä yhtä suurena kuin 0, tämä on yksinkertaistus, joka voi laukaista sinut myöhemmin. On parasta tarkistaa osoittimesi suoraan NULL: ää vastaan ja käyttää 0 muissa yhteyksissä. Tämä pitää koodisi puhtaana ja helposti ymmärrettävänä, koska tiedät, että käytät viitteitä joka kerta, kun näet NULL.

Askeleet

Osa 1/2: Nollaustarkistuksen suorittaminen

Tarkista nollaus kohdassa C Vaihe 1
Tarkista nollaus kohdassa C Vaihe 1

Vaihe 1. Käytä normaalia nollatarkistuskoodia

Seuraava on ilmeisin tapa kirjoittaa nollatarkistus. Me käytämme ptr tässä artikkelissa tarkistamasi osoittimen nimenä.

  • jos (ptr == NULL)

    {

    // koodi, jos osoitin on NULL

    } muuta {

    // koodi, jos ei NULL

    }

Tarkista nollaus kohdassa C Vaihe 2
Tarkista nollaus kohdassa C Vaihe 2

Vaihe 2. Testaa mikä tahansa muu arvo kuin NULL

Joskus on helpompaa testata eriarvoisuutta. Ei yllätyksiä täällä:

  • jos (ptr! = NULL) {

    // koodi, jos ei NULL

    }

Tarkista nollaus kohdassa C vaiheessa 3
Tarkista nollaus kohdassa C vaiheessa 3

Vaihe 3. Kirjoita ensin NULL virheiden välttämiseksi (valinnainen)

Suurin haitta PTR == NULL -menetelmässä on mahdollisuus, että kirjoitat vahingossa ptr = NULL ja määrität NULL -arvon kyseiselle osoittimelle. Tämä voi aiheuttaa suuren päänsäryn. Koska (epä) tasa -arvon testaus käsittelee operandit symmetrisesti, voit saada täsmälleen saman tuloksen kirjoittamalla jos (NULL == ptr) sen sijaan. Tämä on kirjoitusvirheitä kestävämpi, koska vahingossa NULL = ptr luo yksinkertaisen kääntämisvirheen.

Tämä näyttää joillekin ohjelmoijille hieman hankalalta, mutta se on täysin pätevä. Käytettävä lähestymistapa riippuu vain henkilökohtaisista mieltymyksistä ja siitä, kuinka hyvä kääntäjäsi havaitsee if (ptr = NULL) -virheen

Tarkista nollaus kohdassa C vaiheessa 4
Tarkista nollaus kohdassa C vaiheessa 4

Vaihe 4. Testaa, onko muuttuja tosi

Yksinkertainen jos (ptr) testaa onko ptr TOSI. Se palauttaa EPÄTOSI, jos ptr on NULL tai jos ptr on 0. Erotuksella ei ole väliä monissa tapauksissa, mutta muista, että ne eivät ole identtisiä kaikissa arkkitehtuureissa.

Tämä on päinvastoin jos (! ptr), joka palauttaa TOSI, jos ptr on EPÄTOSI.

Osa 2/2: Virheiden välttäminen

Tarkista nollaus kohdassa C vaiheessa 5
Tarkista nollaus kohdassa C vaiheessa 5

Vaihe 1. Aseta osoitin ennen NULL -tarkistusta

Yksi yleinen virhe on olettaa, että äskettäin luodulla osoittimella on NULL -arvo. Tämä ei ole totta. Määrittämätön osoitin osoittaa edelleen muistiosoitetta, ei vain määrittämääsi osoitetta. On yleinen käytäntö asettaa äskettäin luodut tai juuri vapautetut osoittimet NULL -asetukseksi varmistaaksesi, että et käytä tätä hyödytöntä osoitetta vahingossa.

  • Vältä tätä virhettä:

    char *ptr;

    jos (ptr == NULL)

    {

    // Tämä palauttaa EPÄTOSI. Osoittimelle on annettu kelvollinen arvo.

    }

  • Kirjoita sen sijaan:

    char *ptr = NULL; // Tämä määrittää osoittimen arvoon NULL

    jos (ptr == NULL)

    {

    // Tämä palauttaa arvon TOSI, jos osoitinta ei ole määritetty uudelleen.

    }

Tarkista nolla C -vaiheessa 6
Tarkista nolla C -vaiheessa 6

Vaihe 2. Kiinnitä huomiota toimintoihin, jotka voivat palauttaa NULL -arvon

Jos funktio voi palauttaa NULL -arvon, mieti, onko tämä mahdollista ja aiheuttaako se myöhemmin ongelmia koodissasi. Tässä on esimerkki malloc -toiminnosta, joka käyttää nollatarkistusta (jos (ptr)) varmistaakseen, että se käsittelee vain kelvollisten arvojen osoittimia:

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

    jos (ptr) {

    int i;

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

    ptr = i;

    }

Tarkista nollaus kohdassa C Vaihe 7
Tarkista nollaus kohdassa C Vaihe 7

Vaihe 3. Ymmärrä, että NULL on 0, mutta sinun on aina käytettävä NULL: ää 0: n sijaan, kun työskentelet osoittimien kanssa selkeyden vuoksi

Historiallisesti C edusti NULLia numerona 0 (eli 0x00). Nykyään se voi muuttua hieman monimutkaisemmaksi ja vaihtelee käyttöjärjestelmän mukaan. Voit yleensä tarkistaa NULL -arvon käyttämällä ptr == 0, mutta on kulmitapauksia, joissa tämä voi aiheuttaa ongelmia. Ehkä vielä tärkeämpää on, että NULL: n käyttäminen tekee selväksi, että käytät osoittimia muille koodisi lukijoille.

Vinkkejä

Voit käyttää tätä sisäänkirjautumista silmukoiden tapaan kuten mitä tahansa muuta: while (NULL == ptr) {

Suositeltava: