Sådan kontrolleres null i C: 7 trin (med billeder)

Indholdsfortegnelse:

Sådan kontrolleres null i C: 7 trin (med billeder)
Sådan kontrolleres null i C: 7 trin (med billeder)

Video: Sådan kontrolleres null i C: 7 trin (med billeder)

Video: Sådan kontrolleres null i C: 7 trin (med billeder)
Video: How to Change the Icon Size in GIMP - [ Make GIMP Icons Bigger ] 2024, Kan
Anonim

I C er NULL en symbolsk konstant, der altid peger på et ikke -eksisterende punkt i hukommelsen. Selvom mange programmører behandler det som lig med 0, er dette en forenkling, der kan snuble dig senere. Det er bedst at kontrollere dine pointers mod NULL direkte og bruge 0 i andre sammenhænge. Dette holder din kode ren og let at forstå, da du ved, at du arbejder med pointers hver gang du ser NULL.

Trin

Del 1 af 2: Udførelse af et nulkontrol

Kontroller Null i C Trin 1
Kontroller Null i C Trin 1

Trin 1. Brug standard nul check -koden

Følgende er den mest oplagte måde at skrive en nul check på. Vi vil bruge ptr i denne artikel som navnet på den markør, du tjekker.

  • hvis (ptr == NULL)

    {

    // kode hvis markøren er NULL

    } andet {

    // kode hvis ikke NULL

    }

Kontroller Null i C Trin 2
Kontroller Null i C Trin 2

Trin 2. Test for enhver værdi, bortset fra NULL

Nogle gange er det mere bekvemt at teste for ulighed i stedet. Ingen overraskelser her:

  • hvis (ptr! = NULL) {

    // kode hvis ikke NULL

    }

Kontroller Null i C Trin 3
Kontroller Null i C Trin 3

Trin 3. Skriv NULL først for at undgå fejl (valgfrit)

Den største ulempe ved PTR == NULL -metoden er chancen for, at du ved et uheld skriver ptr = NULL i stedet og tildeler NULL -værdien til denne markør. Dette kan forårsage stor hovedpine. Da test for (in) lighed behandler operanderne symmetrisk, kan du få nøjagtig det samme resultat ved at skrive hvis (NULL == ptr) i stedet. Dette er mere stavefejl, da en utilsigtet NULL = ptr skaber en simpel kompileringsfejl.

Dette ser lidt akavet ud for nogle programmører, men det er helt gyldigt. Hvilken tilgang du bruger, afhænger bare af personlige præferencer, og hvor god din kompilator er til at opdage if (ptr = NULL) fejlen

Kontroller Null i C Trin 4
Kontroller Null i C Trin 4

Trin 4. Test om variablen er sand

En enkel hvis (ptr) tester, om ptr er SAND. Det returnerer FALSKT, hvis ptr er NULL, eller hvis ptr er 0. Sondringen er ikke vigtig i mange tilfælde, men vær opmærksom på, at disse ikke er identiske i alle arkitekturer.

Det modsatte af dette er hvis (! ptr), som returnerer SAND, hvis ptr er FALSK.

Del 2 af 2: Undgå fejl

Kontroller Null i C Trin 5
Kontroller Null i C Trin 5

Trin 1. Indstil en markør, før du søger efter NULL

En almindelig fejl er at antage, at en nyoprettet markør har en NULL -værdi. Det er ikke sandt. En ikke -tildelt markør peger stadig på en hukommelsesadresse, bare ikke en, du har angivet. Det er almindelig praksis at indstille nyoprettede eller nyligt frigivne pointer til NULL for at sikre, at du ikke bruger denne uhensigtsmæssige adresse ved et uheld.

  • Undgå denne fejl:

    char *ptr;

    hvis (ptr == NULL)

    {

    // Dette returnerer FALSKT. Markøren er blevet tildelt en gyldig værdi.

    }

  • Skriv i stedet:

    char *ptr = NULL; // Dette tildeler markøren til NULL

    hvis (ptr == NULL)

    {

    // Dette returnerer SAND, hvis markøren ikke er blevet tildelt igen.

    }

Kontroller Null i C Trin 6
Kontroller Null i C Trin 6

Trin 2. Vær opmærksom på funktioner, der kan returnere NULL

Hvis en funktion kan returnere NULL, skal du tænke over, om dette er en mulighed, og om det ville forårsage problemer senere i din kode. Her er et eksempel på malloc -funktionen ved hjælp af nulkontrollen (hvis (ptr)) for at sikre, at den kun håndterer pointer med gyldige værdier:

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

    hvis (ptr) {

    int i;

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

    ptr = i;

    }

Kontroller Null i C Trin 7
Kontroller Null i C Trin 7

Trin 3. Forstå, at NULL er 0, men du skal altid bruge NULL i stedet for 0, når du arbejder med pointer for at få det klarere

Historisk set repræsenterede C NULL som tallet 0 (det vil sige 0x00). I dag kan det blive lidt mere kompliceret og varierer efter operativsystem. Du kan normalt kontrollere for NULL ved hjælp af ptr == 0, men der er hjørnesager, hvor dette kan forårsage et problem. Måske endnu vigtigere, gør brug af NULL det klart, at du arbejder med tips til andre, der læser din kode.

Tips

Du kan bruge denne indtjekning, mens sløjfer ligesom alle andre: mens (NULL == ptr) {

Anbefalede: