Jak zkontrolovat Null v C: 7 kroků (s obrázky)

Obsah:

Jak zkontrolovat Null v C: 7 kroků (s obrázky)
Jak zkontrolovat Null v C: 7 kroků (s obrázky)

Video: Jak zkontrolovat Null v C: 7 kroků (s obrázky)

Video: Jak zkontrolovat Null v C: 7 kroků (s obrázky)
Video: How to Change the Icon Size in GIMP - [ Make GIMP Icons Bigger ] 2024, Smět
Anonim

V C je NULL symbolická konstanta, která vždy ukazuje na neexistující bod v paměti. Ačkoli mnoho programátorů to považuje za rovné 0, toto je zjednodušení, které vás může později vyklopit. Nejlepší je zkontrolovat ukazatele proti NULL přímo a použít 0 v jiných kontextech. Díky tomu bude váš kód čistý a snadno srozumitelný, protože budete vědět, že pracujete s ukazateli pokaždé, když uvidíte NULL.

Kroky

Část 1 ze 2: Provedení nulové kontroly

Zaškrtněte Null v C Krok 1
Zaškrtněte Null v C Krok 1

Krok 1. Použijte standardní kontrolní kód null

Následuje nejzjevnější způsob, jak napsat null check. Použijeme ptr v tomto článku jako název ukazatele, který kontrolujete.

  • if (ptr == NULL)

    {

    // kód, pokud je ukazatel NULL

    } else {

    // kód, pokud není NULL

    }

Zaškrtněte Null v C Krok 2
Zaškrtněte Null v C Krok 2

Krok 2. Otestujte jakoukoli hodnotu kromě NULL

Někdy je výhodnější místo toho testovat nerovnost. Tady žádné překvapení:

  • if (ptr! = NULL) {

    // kód, pokud není NULL

    }

Zkontrolujte C v kroku 3 Null
Zkontrolujte C v kroku 3 Null

Krok 3. Napište nejprve NULL, abyste se vyhnuli chybám (volitelně)

Hlavní nevýhodou metody PTR == NULL je šance, že místo toho omylem zadáte ptr = NULL a tomuto ukazateli přiřadíte hodnotu NULL. To může způsobit velkou bolest hlavy. Protože testování (ne) rovnosti zachází s operandy symetricky, můžete přesně stejného výsledku dosáhnout psaním if (NULL == ptr) namísto. Toto je odolnější vůči překlepům, protože náhodná hodnota NULL = ptr vytváří jednoduchou chybu kompilace.

Některým programátorům to připadá trochu trapné, ale je to naprosto platné. Který přístup použijete, závisí na osobních preferencích a na tom, jak dobře váš kompilátor detekuje chybu if (ptr = NULL)

Zaškrtněte Null v C Krok 4
Zaškrtněte Null v C Krok 4

Krok 4. Otestujte, zda je proměnná pravdivá

Jednoduchý pokud (ptr) testuje, zda je ptr PRAVDA. Vrátí FALSE, pokud ptr je NULL, nebo pokud ptr je 0. Na rozlišení v mnoha případech nezáleží, ale uvědomte si, že tyto nejsou ve všech architekturách totožné.

Opak toho je if (! ptr), který vrátí TRUE, pokud ptr je FALSE.

Část 2 ze 2: Vyhýbání se chybám

Zkontrolujte C v kroku 5 Null
Zkontrolujte C v kroku 5 Null

Krok 1. Před kontrolou NULL nastavte ukazatel

Jednou z běžných chyb je předpokládat, že nově vytvořený ukazatel má hodnotu NULL. To není pravda. Nepřiřazený ukazatel stále ukazuje na adresu paměti, nikoli na adresu, kterou jste zadali. Běžnou praxí je nastavit nově vytvořené nebo nově uvolněné ukazatele na NULL, abyste se ujistili, že tuto neužitečnou adresu nepoužijete náhodou.

  • Vyhněte se této chybě:

    char *ptr;

    if (ptr == NULL)

    {

    // Tím se vrátí FALSE. Ukazateli byla přiřazena platná hodnota.

    }

  • Místo toho napište:

    char *ptr = NULL; // To přiřadí ukazatel na NULL

    if (ptr == NULL)

    {

    // Pokud ukazatel nebyl znovu přiřazen, vrátí hodnotu TRUE.

    }

Zkontrolujte C v kroku 6 Null
Zkontrolujte C v kroku 6 Null

Krok 2. Věnujte pozornost funkcím, které by mohly vrátit hodnotu NULL

Pokud funkce může vrátit hodnotu NULL, přemýšlejte o tom, zda je to možné a zda by to později v kódu způsobilo problémy. Zde je příklad funkce malloc pomocí kontroly null (pokud (ptr)), aby bylo zajištěno, že zpracovává pouze ukazatele s platnými hodnotami:

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

    if (ptr) {

    int i;

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

    ptr = i;

    }

Zkontrolujte C v kroku 7 Null
Zkontrolujte C v kroku 7 Null

Krok 3. Pochopte, že NULL je 0, ale při práci s ukazateli z důvodu srozumitelnosti byste měli vždy používat NULL místo 0

Historicky C reprezentovalo NULL jako číslo 0 (tj. 0x00). V dnešní době to může být trochu komplikovanější a liší se podle operačního systému. NULL můžete obvykle zkontrolovat pomocí ptr == 0, ale existují rohové případy, kde to může způsobit problém. Možná ještě důležitější je, že pomocí NULL je zřejmé, že pracujete s ukazateli pro jiné lidi, kteří čtou váš kód.

Tipy

Toto odbavení můžete použít při smyčkách jako každé jiné: while (NULL == ptr) {

Doporučuje: