Hoe om nul in C te kontroleer: 7 stappe (met foto's)

INHOUDSOPGAWE:

Hoe om nul in C te kontroleer: 7 stappe (met foto's)
Hoe om nul in C te kontroleer: 7 stappe (met foto's)

Video: Hoe om nul in C te kontroleer: 7 stappe (met foto's)

Video: Hoe om nul in C te kontroleer: 7 stappe (met foto's)
Video: How to Change the Icon Size in GIMP - [ Make GIMP Icons Bigger ] 2024, Mei
Anonim

In C is NULL 'n simboliese konstante wat altyd dui op 'n nie -bestaande punt in die geheue. Alhoewel baie programmeerders dit as gelyk aan 0 beskou, is dit 'n vereenvoudiging wat u later kan laat struikel. Dit is die beste om u wenke direk teen NULL na te gaan en 0 in ander kontekste te gebruik. Dit hou u kode skoon en maklik om te verstaan, aangesien u sal weet dat u elke keer as u NULL sien, met wenke werk.

Stappe

Deel 1 van 2: 'n Nulkontrole uitvoer

Gaan Null in C Stap 1 na
Gaan Null in C Stap 1 na

Stap 1. Gebruik die standaard nul tjek kode

Die volgende is die duidelikste manier om 'n nul tjek te skryf. Ons sal gebruik ptr in hierdie artikel as die naam van die wyser wat u nagaan.

  • as (ptr == NULL)

    {

    // kode as wyser NULL is

    } anders {

    // kode indien nie NULL nie

    }

Gaan Null in C Stap 2 na
Gaan Null in C Stap 2 na

Stap 2. Toets vir enige waarde behalwe NULL

Soms is dit geriefliker om eerder op ongelykheid te toets. Geen verrassings hier nie:

  • as (ptr! = NULL) {

    // kode indien nie NULL nie

    }

Gaan Null in C Stap 3 na
Gaan Null in C Stap 3 na

Stap 3. Skryf eers die NULL neer om foute te vermy (opsioneel)

Die grootste nadeel van die PTR == NULL -metode is die kans dat u per ongeluk ptr = NULL tik deur die NULL -waarde aan die wyser toe te ken. Dit kan groot hoofpyn veroorsaak. Aangesien die toetsing van (in) gelykheid die operande simmetries behandel, kan u presies dieselfde resultaat kry deur te skryf as (NULL == ptr) in plaas daarvan. Dit is meer tikbestand, aangesien 'n toevallige NULL = ptr 'n eenvoudige opstelfout veroorsaak.

Dit lyk vir sommige programmeerders 'n bietjie ongemaklik, maar dit is heeltemal geldig. Watter benadering u gebruik, hang net af van persoonlike voorkeur en hoe goed u samesteller die fout as (ptr = NULL) kan opspoor

Gaan Null in C Stap 4 na
Gaan Null in C Stap 4 na

Stap 4. Toets of die veranderlike waar is

'N Eenvoudige as (ptr) toets of ptr WAAR is. Dit sal ONWAAR terugkeer as ptr NUL is, of as ptr 0. Die onderskeid maak in baie gevalle nie saak nie, maar wees bewus daarvan dat dit nie in alle argitekture identies is nie.

Die omgekeerde hiervan is as (! ptr), wat WAAR sal terugkeer as ptr ONWAAR is.

Deel 2 van 2: Vermy foute

Gaan Null in C Stap 5 na
Gaan Null in C Stap 5 na

Stap 1. Stel 'n wyser voordat u na NULL kyk

'N Algemene fout is om aan te neem dat 'n nuutgeskepte wyser 'n NULL -waarde het. Dit is nie waar nie. 'N Wyser wat nie toegewys is nie, wys steeds na 'n geheue -adres, net nie een wat u gespesifiseer het nie. Dit is 'n algemene gebruik om nuutgeskepte of nuutvrygestelde aanwysers op NULL in te stel om seker te maak dat u nie hierdie nuttelose adres per ongeluk gebruik nie.

  • Vermy hierdie fout:

    char *ptr;

    as (ptr == NULL)

    {

    // Dit sal ONWAAR terugkeer. 'N Geldige waarde is aan die wyser toegeken.

    }

  • Skryf eerder:

    char *ptr = NULL; // Dit ken die wyser toe aan NULL

    as (ptr == NULL)

    {

    // Dit sal WAAR terugkeer as die wyser nie weer toegewys is nie.

    }

Gaan Null in C Stap 6 na
Gaan Null in C Stap 6 na

Stap 2. Gee aandag aan funksies wat NULL kan teruggee

As 'n funksie NULL kan terugstuur, dink dan na of dit moontlik is, en of dit later probleme in u kode kan veroorsaak. Hier is 'n voorbeeld van die malloc -funksie met behulp van die null -tjek (as (ptr)) om te verseker dat dit slegs wenke met geldige waardes hanteer:

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

    as (ptr) {

    int ek;

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

    ptr = i;

    }

Gaan Null in C Stap 7 na
Gaan Null in C Stap 7 na

Stap 3. Verstaan dat NULL 0 is, maar u moet altyd NULL in plaas van 0 gebruik as u met wysers werk vir duidelikheid

Histories verteenwoordig C NULL as die getal 0 (dit wil sê 0x00). Tans kan dit 'n bietjie ingewikkelder word, en dit hang af van die bedryfstelsel. U kan gewoonlik op NULL kyk ptr == 0, maar daar is gevalle waar dit 'n probleem kan veroorsaak. Miskien belangriker, dit is duidelik dat die gebruik van NULL duidelik is dat u met wenke werk vir ander mense wat u kode lees.

Wenke

U kan hierdie inskrywing gebruik terwyl lusse net soos enige ander: terwyl (NULL == ptr) {

Aanbeveel: