Kako provjeriti ništa u C: 7 koraka (sa slikama)

Sadržaj:

Kako provjeriti ništa u C: 7 koraka (sa slikama)
Kako provjeriti ništa u C: 7 koraka (sa slikama)

Video: Kako provjeriti ništa u C: 7 koraka (sa slikama)

Video: Kako provjeriti ništa u C: 7 koraka (sa slikama)
Video: Photoshop Tutorial: How to Create a Powerful, Text Portrait Poster 2024, Maj
Anonim

U C, NULL je simbolična konstanta koja uvijek ukazuje na nepostojeću tačku u memoriji. Iako mnogi programeri to smatraju jednakim 0, ovo je pojednostavljenje koje vas može kasnije saplesti. Najbolje je direktno provjeriti pokazivače u odnosu na NULL i koristiti 0 u drugim kontekstima. Ovo održava vaš kôd čistim i lakim za razumijevanje, jer ćete znati da radite s pokazivačima svaki put kada vidite NULL.

Koraci

1. dio 2: Izvođenje nulte provjere

Provjerite null u C Korak 1
Provjerite null u C Korak 1

Korak 1. Upotrijebite standardni nulti kôd za provjeru

Slijedi najočitiji način pisanja nulte provjere. Koristićemo ptr u ovom članku kao naziv pokazivača koji provjeravate.

  • if (ptr == NULL)

    {

    // kodira ako je pokazivač NULL

    } else {

    // kod ako nije NULL

    }

Provjerite Null in C Korak 2
Provjerite Null in C Korak 2

Korak 2. Testirajte bilo koju vrijednost osim NULL -a

Ponekad je umjesto toga prikladnije testirati nejednakost. Ovde nema iznenađenja:

  • if (ptr! = NULL) {

    // kod ako nije NULL

    }

Provjerite Null in C Korak 3
Provjerite Null in C Korak 3

Korak 3. Najprije napišite NULL kako biste izbjegli greške (izborno)

Glavni nedostatak PTR == NULL metode je mogućnost da ćete slučajno upisati ptr = NULL, dodjeljujući NULL vrijednost tom pokazivaču. To može uzrokovati jaku glavobolju. Budući da testiranje (ne) jednakosti tretira operande simetrično, pisanjem možete dobiti potpuno isti rezultat if (NULL == ptr) umjesto toga. Ovo je otpornije na pogreške pri kucanju, jer slučajni NULL = ptr stvara jednostavnu grešku pri prevođenju.

Nekim programerima ovo izgleda pomalo neugodno, ali savršeno je valjano. Koji ćete pristup koristiti ovisi o ličnim preferencijama i o tome koliko je vaš kompajler dobar u otkrivanju greške if (ptr = NULL)

Provjerite null u C Korak 4
Provjerite null u C Korak 4

Korak 4. Testirajte da li je varijabla tačna

Jednostavno ako (ptr) testira je li ptr TRUE. Vratit će FALSE ako je ptr NULL, ili ako je ptr 0. Razlika nije važna u mnogim slučajevima, ali imajte na umu da nisu identične u svim arhitekturama.

Obrnuto od ovoga ako (! ptr), koji će vratiti TRUE ako je ptr FALSE.

Dio 2 od 2: Izbjegavanje grešaka

Provjerite Null in C Korak 5
Provjerite Null in C Korak 5

Korak 1. Postavite pokazivač prije provjere NULL -a

Jedna uobičajena greška je pretpostavka da novostvoreni pokazivač ima NULL vrijednost. Ovo nije istina. Nedodijeljeni pokazivač i dalje upućuje na memorijsku adresu, samo ne onu koju ste naveli. Uobičajena je praksa postavljanje novonastalih ili novooslobođenih pokazivača na NULL kako biste bili sigurni da slučajno nećete koristiti ovu beskorisnu adresu.

  • Izbjegnite ovu grešku:

    char *ptr;

    if (ptr == NULL)

    {

    // Ovo će vratiti FALSE. Pokazivaču je dodijeljena valjana vrijednost.

    }

  • Umjesto toga napišite:

    char *ptr = NULL; // Ovo dodjeljuje pokazivač NULL -u

    if (ptr == NULL)

    {

    // Ovo će vratiti TRUE ako pokazivač nije dodijeljen.

    }

Provjerite Null u C Korak 6
Provjerite Null u C Korak 6

Korak 2. Obratite pažnju na funkcije koje bi mogle vratiti NULL

Ako funkcija može vratiti NULL, razmislite je li to mogućnost i bi li to kasnije u vašem kodu uzrokovalo probleme. Evo primjera funkcije malloc pomoću provjere nule (ako (ptr)) kako biste bili sigurni da rukuje samo pokazivačima s valjanim vrijednostima:

  • int * ptr = malloc (N * veličinaof (int));

    if (ptr) {

    int i;

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

    ptr = i;

    }

Provjerite null u C Korak 7
Provjerite null u C Korak 7

Korak 3. Shvatite da je NULL 0, ali uvijek trebate koristiti NULL umjesto 0 kada radite s pokazivačima radi jasnoće

Istorijski gledano, C je predstavljao NULL kao broj 0 (to jest, 0x00). Danas se to može malo zakomplicirati i ovisi o operativnom sistemu. Obično možete provjeriti NULL pomoću ptr == 0, ali postoje ugaoni slučajevi u kojima to može uzrokovati problem. Možda je još važnije, korištenje NULL -a čini očiglednim da radite s pokazivačima za druge ljude koji čitaju vaš kôd.

Savjeti

Ovu prijavu možete koristiti dok se ponavlja kao i sve druge: while (NULL == ptr) {

Preporučuje se: