Slik sjekker du null i C: 7 trinn (med bilder)

Innholdsfortegnelse:

Slik sjekker du null i C: 7 trinn (med bilder)
Slik sjekker du null i C: 7 trinn (med bilder)

Video: Slik sjekker du null i C: 7 trinn (med bilder)

Video: Slik sjekker du null i C: 7 trinn (med bilder)
Video: First Ever SDXL Training With Kohya LoRA - Stable Diffusion XL Training Will Replace Older Models 2024, Kan
Anonim

I C er NULL en symbolsk konstant som alltid peker på et ikke -eksisterende punkt i minnet. Selv om mange programmerere behandler det som lik 0, er dette en forenkling som kan hjelpe deg senere. Det er best å sjekke pekene dine mot NULL direkte, og bruke 0 i andre sammenhenger. Dette holder koden ren og lett å forstå, siden du vet at du jobber med tips hver gang du ser NULL.

Trinn

Del 1 av 2: Utføre en nullkontroll

Sjekk Null i C Trinn 1
Sjekk Null i C Trinn 1

Trinn 1. Bruk standard nullkontrollkode

Følgende er den mest åpenbare måten å skrive en nullsjekk på. Vi bruker ptr i denne artikkelen som navnet på pekeren du sjekker.

  • hvis (ptr == NULL)

    {

    // kode hvis pekeren er NULL

    } annet {

    // kode hvis ikke NULL

    }

Sjekk Null i C Trinn 2
Sjekk Null i C Trinn 2

Trinn 2. Test for en hvilken som helst verdi, men NULL

Noen ganger er det mer praktisk å teste for ulikhet i stedet. Ingen overraskelser her:

  • hvis (ptr! = NULL) {

    // kode hvis ikke NULL

    }

Sjekk Null i C Trinn 3
Sjekk Null i C Trinn 3

Trinn 3. Skriv NULL først for å unngå feil (valgfritt)

Den største ulempen med PTR == NULL -metoden er sjansen for at du ved et uhell skriver ptr = NULL i stedet og tildeler NULL -verdien til pekeren. Dette kan forårsake stor hodepine. Siden testing for (in) likestilling behandler operandene symmetrisk, kan du få nøyaktig det samme resultatet ved å skrive hvis (NULL == ptr) i stedet. Dette er mer skrivefeilbestandig, siden en utilsiktet NULL = ptr oppretter en enkel kompileringsfeil.

Dette ser litt vanskelig ut for noen programmerere, men det er helt gyldig. Hvilken tilnærming du bruker, avhenger bare av personlige preferanser, og hvor flink kompilatoren er til å oppdage if (ptr = NULL) feilen

Sjekk Null i C Trinn 4
Sjekk Null i C Trinn 4

Trinn 4. Test om variabelen er sann

En enkel hvis (ptr) tester om ptr er SANN. Den vil returnere FALSK hvis ptr er NULL, eller hvis ptr er 0. Skillet spiller ingen rolle i mange tilfeller, men vær oppmerksom på at disse ikke er identiske i alle arkitekturer.

Det motsatte av dette er hvis (! ptr), som vil returnere TRUE hvis ptr er FALSE.

Del 2 av 2: Unngå feil

Sjekk Null i C Trinn 5
Sjekk Null i C Trinn 5

Trinn 1. Sett en peker før du ser etter NULL

En vanlig feil er å anta at en nyopprettet peker har en NULL -verdi. Dette er ikke sant. En peker som ikke er tildelt, peker fremdeles på en minneadresse, bare ikke en du har angitt. Det er vanlig praksis å sette nyopprettede eller nylig frigjorte pekere til NULL for å sikre at du ikke bruker denne uhjelpsomme adressen ved et uhell.

  • Unngå denne feilen:

    røye *ptr;

    hvis (ptr == NULL)

    {

    // Dette vil returnere FALSK. Pekeren har blitt tildelt en gyldig verdi.

    }

  • Skriv heller:

    char *ptr = NULL; // Dette tilordner pekeren til NULL

    hvis (ptr == NULL)

    {

    // Dette vil returnere TRUE hvis pekeren ikke har blitt tildelt på nytt.

    }

Sjekk Null i C Trinn 6
Sjekk Null i C Trinn 6

Trinn 2. Vær oppmerksom på funksjoner som kan returnere NULL

Hvis en funksjon kan returnere NULL, tenk på om dette er en mulighet, og om det ville forårsake problemer senere i koden din. Her er et eksempel på malloc -funksjonen som bruker nullkontrollen (hvis (ptr)) for å sikre at den bare håndterer pekere med gyldige verdier:

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

    hvis (ptr) {

    int i;

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

    ptr = i;

    }

Sjekk Null i C Trinn 7
Sjekk Null i C Trinn 7

Trinn 3. Forstå at NULL er 0, men du bør alltid bruke NULL i stedet for 0 når du arbeider med pekere for klarhet

Historisk sett representerte C NULL som tallet 0 (det vil si 0x00). I dag kan det bli litt mer komplisert, og varierer etter operativsystem. Du kan vanligvis se etter NULL ved å bruke ptr == 0, men det er hjørnetilfeller der dette kan forårsake et problem. Kanskje enda viktigere, bruk av NULL gjør det åpenbart at du jobber med tips for andre som leser koden din.

Tips

Du kan bruke denne innsjekkingen mens du løkker akkurat som alle andre: mens (NULL == ptr) {

Anbefalt: