Cum să verificați nul în C: 7 pași (cu imagini)

Cuprins:

Cum să verificați nul în C: 7 pași (cu imagini)
Cum să verificați nul în C: 7 pași (cu imagini)

Video: Cum să verificați nul în C: 7 pași (cu imagini)

Video: Cum să verificați nul în C: 7 pași (cu imagini)
Video: How to Change the Icon Size in GIMP - [ Make GIMP Icons Bigger ] 2024, Mai
Anonim

În C, NULL este o constantă simbolică care indică întotdeauna un punct inexistent din memorie. Deși mulți programatori o consideră egală cu 0, aceasta este o simplificare care vă poate împiedica mai târziu. Cel mai bine este să vă verificați indicii împotriva NULL direct și să utilizați 0 în alte contexte. Acest lucru vă păstrează codul curat și ușor de înțeles, deoarece veți ști că lucrați cu indicatori de fiecare dată când vedeți NULL.

Pași

Partea 1 din 2: Efectuarea unui control nul

Verificați Nul în C Pasul 1
Verificați Nul în C Pasul 1

Pasul 1. Folosiți codul de verificare standard nul

Următorul este cel mai evident mod de a scrie un cec nul. Vom folosi ptr în acest articol ca numele indicatorului pe care îl verificați.

  • if (ptr == NULL)

    {

    // codează dacă indicatorul este NULL

    } altceva {

    // cod dacă nu NULL

    }

Verificați Nul în C Pasul 2
Verificați Nul în C Pasul 2

Pasul 2. Testați orice valoare în afară de NULL

Uneori este mai convenabil să testați inegalitatea în schimb. Fără surprize aici:

  • if (ptr! = NULL) {

    // cod dacă nu NULL

    }

Verificați nul în C Pasul 3
Verificați nul în C Pasul 3

Pasul 3. Scrieți mai întâi NULL pentru a evita erorile (opțional)

Principalul dezavantaj al metodei PTR == NULL este șansa de a tasta accidental ptr = NULL, atribuind valoarea NULL acelui pointer. Acest lucru poate provoca o durere de cap majoră. Deoarece testarea (in) egalității tratează operanzii simetric, puteți obține exact același rezultat scriind if (NULL == ptr) in schimb. Acest lucru este mai rezistent la greșeli, deoarece un NULL = ptr accidental creează o eroare simplă de compilare.

Acest lucru pare puțin ciudat pentru unii programatori, dar este perfect valabil. Ce abordare utilizați depinde doar de preferințele personale și de cât de bun este compilatorul dvs. la detectarea erorii if (ptr = NULL)

Verificați Nul în C Pasul 4
Verificați Nul în C Pasul 4

Pasul 4. Testați dacă variabila este adevărată

Un simplu dacă (ptr) testează dacă ptr este ADEVĂRAT. Va reveni FALS dacă ptr este NUL sau dacă ptr este 0. Distincția nu contează în multe cazuri, dar rețineți că acestea nu sunt identice în toate arhitecturile.

Reversul acestui lucru este dacă (! ptr), care va reveni ADEVĂRAT dacă ptr este FALS.

Partea 2 din 2: Evitarea greșelilor

Verificați Nul în C Pasul 5
Verificați Nul în C Pasul 5

Pasul 1. Setați un indicator înainte de a verifica NULL

O greșeală obișnuită este să presupunem că un indicator nou creat are o valoare NULL. Nu este adevarat. Un indicator neatribuit încă indică o adresă de memorie, doar una care nu a fost specificată de dvs. Este o practică obișnuită să setați indicatorii nou creați sau eliberați la NULL pentru a vă asigura că nu utilizați accidental această adresă inutilă.

  • Evitați această greșeală:

    char * ptr;

    if (ptr == NULL)

    {

    // Acest lucru va reveni FALS. Pointerului i s-a atribuit o valoare validă.

    }

  • În schimb, scrieți:

    char * ptr = NULL; // Aceasta atribuie indicatorul la NULL

    if (ptr == NULL)

    {

    // Aceasta va reveni la TRUE dacă indicatorul nu a fost realocat.

    }

Verificați Nul în C Pasul 6
Verificați Nul în C Pasul 6

Pasul 2. Acordați atenție funcțiilor care ar putea reveni la NULL

Dacă o funcție poate reveni la NULL, gândiți-vă dacă aceasta este o posibilitate și dacă aceasta ar cauza probleme mai târziu în codul dvs. Iată un exemplu al funcției malloc folosind verificarea nulă (dacă (ptr)) pentru a se asigura că gestionează numai indicii cu valori valide:

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

    if (ptr) {

    int i;

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

    ptr = i;

    }

Verificați Nul în C Pasul 7
Verificați Nul în C Pasul 7

Pasul 3. Înțelegeți că NULL este 0, dar ar trebui să utilizați întotdeauna NULL în loc de 0 atunci când lucrați cu indicatori pentru claritate

Din punct de vedere istoric, C a reprezentat NULL ca numărul 0 (adică 0x00). În zilele noastre poate deveni puțin mai complicat și variază în funcție de sistemul de operare. De obicei, puteți verifica NULL folosind ptr == 0, dar există cazuri de colț în care acest lucru poate cauza o problemă. Poate mai important, utilizarea NULL face evident faptul că lucrați cu indicii pentru alte persoane care vă citesc codul.

sfaturi

Puteți utiliza această înregistrare în timp ce buclele sunt la fel ca oricare alta: while (NULL == ptr) {

Recomandat: