Kako provjeriti null u C: 7 koraka (sa slikama)

Sadržaj:

Kako provjeriti null u C: 7 koraka (sa slikama)
Kako provjeriti null u C: 7 koraka (sa slikama)

Video: Kako provjeriti null u C: 7 koraka (sa slikama)

Video: Kako provjeriti null u C: 7 koraka (sa slikama)
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Svibanj
Anonim

U C, NULL je simbolična konstanta koja uvijek ukazuje na nepostojeću točku u memoriji. Iako mnogi programeri to smatraju jednakim 0, ovo je pojednostavljenje koje vas može kasnije spotaknuti. Najbolje je izravno 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 kad vidite NULL.

Koraci

1. dio od 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. Koristit ćemo ptr u ovom članku kao naziv pokazivača koji provjeravate.

  • ako (ptr == NULL)

    {

    // kod ako je pokazivač NULL

    } else {

    // kod ako nije NULL

    }

Provjerite Null u C Korak 2
Provjerite Null u C Korak 2

Korak 2. Testirajte bilo koju vrijednost osim NULL -a

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

  • if (ptr! = NULL) {

    // kod ako nije NULL

    }

Provjerite Null u C Korak 3
Provjerite Null u C Korak 3

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

Glavni nedostatak metode PTR == NULL 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 ako (NULL == ptr) umjesto toga. Ovo je otpornije na tiskarske pogreške, jer slučajni NULL = ptr stvara jednostavnu pogrešku pri prevođenju.

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

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

Korak 4. Provjerite je li varijabla istinita

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

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

2. dio 2: Izbjegavanje grešaka

Provjerite null u C Korak 5
Provjerite null u C Korak 5

Korak 1. Postavite pokazivač prije provjere NULL -a

Jedna od uobičajenih pogrešaka 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 ovu slučajnu adresu ne koristite slučajno.

  • Izbjegnite ovu grešku:

    char *ptr;

    ako (ptr == NULL)

    {

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

    }

  • Umjesto toga napišite:

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

    ako (ptr == NULL)

    {

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

    }

Provjerite null u C Korak 6
Provjerite null u C Korak 6

Korak 2. Obratite pozornost 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 bi se osiguralo 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 morate koristiti NULL umjesto 0 za rad s pokazivačima radi jasnoće

Povijesno gledano, C je predstavljao NULL kao broj 0 (to jest, 0x00). Danas se to može malo zakomplicirati i ovisi o operativnom sustavu. Obično možete provjeriti NULL pomoću ptr == 0, ali postoje kutni slučajevi u kojima to može uzrokovati problem. Možda je još važnije, korištenje NULL -a čini očitim 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: dok (NULL == ptr) {

Preporučeni: