Kaip patikrinti nulį C: 7 žingsniai (su nuotraukomis)

Turinys:

Kaip patikrinti nulį C: 7 žingsniai (su nuotraukomis)
Kaip patikrinti nulį C: 7 žingsniai (su nuotraukomis)

Video: Kaip patikrinti nulį C: 7 žingsniai (su nuotraukomis)

Video: Kaip patikrinti nulį C: 7 žingsniai (su nuotraukomis)
Video: Gimp: Course For Beginners 8: Scale or Resize an Image 2024, Gegužė
Anonim

C, NULL yra simbolinė konstanta, kuri visada nurodo į neegzistuojantį tašką atmintyje. Nors daugelis programuotojų jį laiko lygiu 0, tai yra supaprastinimas, kuris vėliau gali jus suklupti. Geriausia tiesiogiai patikrinti savo rodykles prieš NULL, o kitose situacijose naudoti 0. Taip jūsų kodas bus švarus ir lengvai suprantamas, nes žinosite, kad dirbate su rodyklėmis kiekvieną kartą, kai matote NULL.

Žingsniai

1 dalis iš 2: Nulinio patikrinimo atlikimas

1 veiksme pažymėkite nulį
1 veiksme pažymėkite nulį

1 veiksmas. Naudokite standartinį nulinio patikrinimo kodą

Toliau pateikiamas akivaizdžiausias būdas parašyti nulinį čekį. Mes naudosime ptr šiame straipsnyje kaip rodyklės, kurią tikrinate, pavadinimas.

  • jei (ptr == NULL)

    {

    // kodas, jei žymeklis yra NULL

    } Kitas {

    // kodas, jei ne NULL

    }

2 veiksme pažymėkite nulį
2 veiksme pažymėkite nulį

Žingsnis 2. Patikrinkite bet kokią vertę, išskyrus NULL

Kartais patogiau išbandyti nelygybę. Čia nėra staigmenų:

  • jei (ptr! = NULL) {

    // kodas, jei ne NULL

    }

3 veiksme pažymėkite „Null“
3 veiksme pažymėkite „Null“

Žingsnis 3. Pirmiausia užrašykite NULL, kad išvengtumėte klaidų (neprivaloma)

Pagrindinis PTR == NULL metodo trūkumas yra tikimybė, kad netyčia įvesite ptr = NULL, priskirdami šiai žymekliui reikšmę NULL. Tai gali sukelti didelį galvos skausmą. Kadangi (ne) lygybės testavimas operandus vertina simetriškai, rašydami galite gauti tą patį rezultatą jei (NULL == ptr) vietoj to. Tai atsparesnė rašybos klaidoms, nes atsitiktinis NULL = ptr sukuria paprastą kompiliavimo klaidą.

Kai kuriems programuotojams tai atrodo šiek tiek nepatogu, tačiau tai visiškai teisinga. Kurį metodą naudosite, priklauso tik nuo asmeninių pageidavimų ir nuo to, kaip gerai jūsų kompiliatorius gali aptikti klaidą if (ptr = NULL)

Patikrinkite nulį C veiksme 4
Patikrinkite nulį C veiksme 4

Žingsnis 4. Patikrinkite, ar kintamasis yra teisingas

Paprastas jei (ptr) patikrina, ar ptr yra TIESA. Jei ptr yra NULL, arba jei ptr yra 0, jis grąžins FALSE. Skirtumas daugeliu atvejų nesvarbus, tačiau atminkite, kad jie nėra vienodi visose architektūrose.

Tai yra atvirkščiai jei (! ptr), kuris grąžins TRUE, jei ptr yra FALSE.

2 dalis iš 2: Klaidų vengimas

Patikrinkite nulį C veiksme 5
Patikrinkite nulį C veiksme 5

1 žingsnis Prieš nustatydami NULL, nustatykite žymeklį

Viena dažna klaida yra manyti, kad naujai sukurtas žymeklis turi NULL reikšmę. Tai netiesa. Nepriskirtas žymeklis vis tiek nurodo atminties adresą, tik ne tą, kurį nurodėte. Įprasta naujai sukurtus arba naujai išlaisvintus rodiklius nustatyti į NULL, kad įsitikintumėte, jog atsitiktinai nenaudojate šio netinkamo adreso.

  • Venkite šios klaidos:

    char *ptr;

    jei (ptr == NULL)

    {

    // Tai grąžins FALSE. Rodyklei priskirta teisinga reikšmė.

    }

  • Vietoj to rašykite:

    char *ptr = NULL; // Tai priskiria žymeklį NULL

    jei (ptr == NULL)

    {

    // Tai grąžins TRUE, jei žymeklis nebus priskirtas iš naujo.

    }

6 veiksme pažymėkite nulį
6 veiksme pažymėkite nulį

2 žingsnis. Atkreipkite dėmesį į funkcijas, kurios gali grąžinti NULL

Jei funkcija gali grąžinti NULL, pagalvokite, ar tai yra galimybė, ir ar tai vėliau nesukels problemų jūsų kode. Štai netinkamos funkcijos pavyzdys naudojant nulinį patikrinimą (jei (ptr)), kad būtų užtikrinta, jog ji apdoroja tik rodykles, turinčias galiojančias reikšmes:

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

    if (ptr) {

    int i;

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

    ptr = i;

    }

Patikrinkite nulį C veiksme 7
Patikrinkite nulį C veiksme 7

Žingsnis 3. Supraskite, kad NULL yra 0, tačiau dirbdami su rodyklėmis aiškumo dėlei visada turėtumėte naudoti NULL, o ne 0

Istoriškai C reiškė NULL kaip skaičių 0 (tai yra 0x00). Šiais laikais tai gali būti šiek tiek sudėtingiau ir skiriasi priklausomai nuo operacinės sistemos. Paprastai NULL galite patikrinti naudodami ptr == 0, tačiau yra kampinių atvejų, kai tai gali sukelti problemų. Galbūt dar svarbiau, kad naudojant NULL akivaizdu, kad dirbate su rodyklėmis kitiems žmonėms, skaitantiems jūsų kodą.

Patarimai

Šią registraciją galite naudoti ciklo metu, kaip ir bet kurią kitą: o (NULL == ptr) {

Rekomenduojamas: