Kako preveriti nič v C: 7 korakov (s slikami)

Kazalo:

Kako preveriti nič v C: 7 korakov (s slikami)
Kako preveriti nič v C: 7 korakov (s slikami)

Video: Kako preveriti nič v C: 7 korakov (s slikami)

Video: Kako preveriti nič v C: 7 korakov (s slikami)
Video: Учим Photoshop за 1 час! #От Профессионала 2024, Maj
Anonim

V C je NULL simbolna konstanta, ki vedno kaže na neobstoječo točko v spominu. Čeprav ga mnogi programerji obravnavajo kot 0, je to poenostavitev, ki vas lahko kasneje spotakne. Najbolje je, da svoje kazalce neposredno preverite glede na NULL in uporabite 0 v drugih kontekstih. Tako bo vaša koda čista in enostavna za razumevanje, saj boste vedeli, da delate s kazalci vsakič, ko vidite NULL.

Koraki

1. del od 2: Izvajanje ničelne kontrole

Preverite nič v C koraku 1
Preverite nič v C koraku 1

Korak 1. Uporabite standardno ničelno kodo za preverjanje

Sledi najbolj očiten način za zapis ničelnega čeka. Uporabili bomo ptr v tem članku kot ime kazalca, ki ga preverjate.

  • če (ptr == NULL)

    {

    // kodira, če je kazalec NULL

    } drugo {

    // koda, če ni NULL

    }

Preverite nič v C koraku 2
Preverite nič v C koraku 2

Korak 2. Preizkusite katero koli vrednost, razen NULL

Včasih je primerneje namesto tega preizkusiti neenakost. Tu ni presenečenj:

  • if (ptr! = NULL) {

    // koda, če ni NULL

    }

Preverite nič v C koraku 3
Preverite nič v C koraku 3

Korak 3. Najprej napišite NULL, da se izognete napakam (neobvezno)

Glavna pomanjkljivost metode PTR == NULL je možnost, da po nesreči vnesete ptr = NULL in temu kazalcu dodelite vrednost NULL. To lahko povzroči močan glavobol. Ker testiranje (ne) enakosti obravnava operande simetrično, lahko s pisanjem dobite popolnoma enak rezultat če (NULL == ptr) namesto tega. To je bolj odporno na tipkarske napake, saj naključni NULL = ptr povzroči preprosto napako pri prevajanju.

Nekaterim programerjem se to zdi nekoliko nerodno, vendar je povsem veljavno. Kateri pristop boste uporabili, je odvisno samo od osebnih želja in od tega, kako uspešen je vaš prevajalnik pri odkrivanju napake if (ptr = NULL)

Preverite nič v C koraku 4
Preverite nič v C koraku 4

Korak 4. Preverite, ali je spremenljivka res

Preprosto če (ptr) preveri, ali je ptr res. Vrnilo se bo FALSE, če je ptr NULL ali če je ptr 0. Razlikovanje v mnogih primerih ni pomembno, vendar se zavedajte, da niso enaki v vseh arhitekturah.

Obratno od tega je če (! ptr), ki bo vrnilo TRUE, če je ptr FALSE.

2. del 2: Izogibanje napakam

Preverite nič v C koraku 5
Preverite nič v C koraku 5

Korak 1. Pred preverjanjem NULL nastavite kazalec

Ena pogosta napaka je domneva, da ima novo ustvarjeni kazalec vrednost NULL. To ni res. Nedodeljeni kazalec še vedno kaže na pomnilniški naslov, samo ne na tistega, ki ste ga določili. Običajna praksa je, da novonastale ali na novo sproščene kazalce nastavite na NULL, da zagotovite, da ne boste pomotoma uporabili tega neuporabnega naslova.

  • Izogibajte se tej napaki:

    char *ptr;

    če (ptr == NULL)

    {

    // To bo vrnilo FALSE. Kazalcu je bila dodeljena veljavna vrednost.

    }

  • Namesto tega napišite:

    char *ptr = NULL; // S tem se kazalec dodeli NULL

    če (ptr == NULL)

    {

    // Če kazalec ni bil dodeljen, se vrne TRUE.

    }

Preverite nič v C koraku 6
Preverite nič v C koraku 6

Korak 2. Bodite pozorni na funkcije, ki bi lahko vrnile NULL

Če lahko funkcija vrne NULL, razmislite, ali je to možnost in ali bi to kasneje v vaši kodi povzročilo težave. Tukaj je primer funkcije malloc s preverjanjem ničelnosti (če (ptr)), da zagotovite, da obravnava samo kazalce z veljavnimi vrednostmi:

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

    if (ptr) {

    int i;

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

    ptr = i;

    }

Preverite nič v C koraku 7
Preverite nič v C koraku 7

Korak 3. Zavedajte se, da je NULL 0, vendar za jasnost pri delu s kazalci vedno uporabite NULL namesto 0

V preteklosti je C predstavljal NULL kot številko 0 (to je 0x00). Danes je lahko nekoliko bolj zapleteno in se razlikuje glede na operacijski sistem. Običajno lahko z NULL preverite NULL ptr == 0, vendar obstajajo vogalni primeri, ko lahko to povzroči težavo. Morda je še pomembneje, da uporaba NULL pokaže, da delate s kazalci za druge ljudi, ki berejo vašo kodo.

Nasveti

To prijavo lahko uporabite med zankami, tako kot katero koli drugo: medtem ko (NULL == ptr) {

Priporočena: