Kā pārbaudīt nulli C: 7 soļi (ar attēliem)

Satura rādītājs:

Kā pārbaudīt nulli C: 7 soļi (ar attēliem)
Kā pārbaudīt nulli C: 7 soļi (ar attēliem)

Video: Kā pārbaudīt nulli C: 7 soļi (ar attēliem)

Video: Kā pārbaudīt nulli C: 7 soļi (ar attēliem)
Video: How to Change the Icon Size in GIMP - [ Make GIMP Icons Bigger ] 2024, Maijs
Anonim

C, NULL ir simboliska konstante, kas vienmēr norāda uz neeksistējošu punktu atmiņā. Lai gan daudzi programmētāji to uzskata par vienādu ar 0, tas ir vienkāršojums, kas vēlāk var jūs aizkustināt. Vislabāk ir tieši pārbaudīt savus rādītājus pret NULL un izmantot 0 citos kontekstos. Tādējādi jūsu kods ir tīrs un viegli saprotams, jo jūs zināt, ka strādājat ar rādītājiem katru reizi, kad redzat NULL.

Soļi

1. daļa no 2: nulles pārbaudes veikšana

Pārbaudiet nulli C 1. solī
Pārbaudiet nulli C 1. solī

1. darbība. Izmantojiet standarta nulles pārbaudes kodu

Tālāk ir sniegts visredzamākais veids, kā uzrakstīt nulles čeku. Mēs izmantosim ptr šajā rakstā kā rādītāja nosaukums, kuru pārbaudāt.

  • ja (ptr == NULL)

    {

    // kods, ja rādītājs ir NULL

    } vēl {

    // kods, ja ne NULL

    }

Pārbaudiet nulli C 2. solī
Pārbaudiet nulli C 2. solī

2. solis. Pārbaudiet, vai nav vērtības, izņemot NULL

Dažreiz ērtāk ir pārbaudīt nevienlīdzību. Šeit nav pārsteigumu:

  • ja (ptr! = NULL) {

    // kods, ja ne NULL

    }

3. solī pārbaudiet nulli
3. solī pārbaudiet nulli

3. solis. Vispirms uzrakstiet NULL, lai izvairītos no kļūdām (pēc izvēles)

Galvenais PTR == NULL metodes trūkums ir iespēja nejauši ierakstīt ptr = NULL, piešķirot šim rādītājam vērtību NULL. Tas var izraisīt lielas galvassāpes. Tā kā (ne) vienlīdzības pārbaude operandus izskata simetriski, rakstot, jūs varat iegūt tieši tādu pašu rezultātu ja (NULL == ptr) tā vietā. Tas ir izturīgāks pret drukas kļūdām, jo nejaušs NULL = ptr rada vienkāršu kompilācijas kļūdu.

Dažiem programmētājiem tas šķiet nedaudz neērti, taču tas ir pilnīgi derīgi. Jūsu izvēlētā pieeja ir atkarīga no personīgajām vēlmēm un no tā, cik labi jūsu kompilators spēj atklāt kļūdu if (ptr = NULL)

C solī pārbaudiet nulli
C solī pārbaudiet nulli

4. solis. Pārbaudiet, vai mainīgais ir patiess

Vienkāršs ja (ptr) pārbauda, vai ptr ir PATIESA. Tas atgriezīs FALSE, ja ptr ir NULL vai ja ptr ir 0. Daudzos gadījumos atšķirībai nav nozīmes, taču ņemiet vērā, ka tās nav vienādas visās arhitektūrās.

Apvērsums ir šāds ja (! ptr), kas atgriezīs TRUE, ja ptr ir FALSE.

2. daļa no 2: izvairīšanās no kļūdām

C solī pārbaudiet nulli
C solī pārbaudiet nulli

1. solis. Pirms NULL pārbaudes pārbaudiet, iestatiet rādītāju

Viena izplatīta kļūda ir pieņemt, ka jaunizveidotajam rādītājam ir NULL vērtība. Tā nav taisnība. Nepiešķirts rādītājs joprojām norāda uz atmiņas adresi, tikai ne uz jūsu norādīto. Ir ierasta prakse jaunizveidotos vai nesen atbrīvotos rādītājus iestatīt uz NULL, lai pārliecinātos, ka nejauši neizmantojat šo nelietderīgo adresi.

  • Izvairieties no šīs kļūdas:

    char *ptr;

    ja (ptr == NULL)

    {

    // Tas atgriezīs FALSE. Rādītājam ir piešķirta derīga vērtība.

    }

  • Tā vietā rakstiet:

    char *ptr = NULL; // Tas piešķir rādītāju NULL

    ja (ptr == NULL)

    {

    // Tas atgriezīs TRUE, ja rādītājs nav piešķirts no jauna.

    }

6. solī pārbaudiet nulli
6. solī pārbaudiet nulli

2. solis. Pievērsiet uzmanību funkcijām, kas varētu atgriezt NULL

Ja funkcija var atgriezt NULL, padomājiet, vai tā ir iespēja un vai tas vēlāk radīs problēmas jūsu kodā. Šeit ir malloc funkcijas piemērs, izmantojot nulles pārbaudi (ja (ptr)), lai nodrošinātu, ka tā apstrādā tikai norādes ar derīgām vērtībām:

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

    ja (ptr) {

    int i;

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

    ptr = i;

    }

C solī pārbaudiet nulli
C solī pārbaudiet nulli

3. solis. Saprotiet, ka NULL ir 0, bet, strādājot ar rādītājiem, skaidrības labad vienmēr jāizmanto NULL, nevis 0

Vēsturiski C attēloja NULL kā skaitli 0 (tas ir, 0x00). Mūsdienās tas var kļūt nedaudz sarežģītāks un atšķiras atkarībā no operētājsistēmas. Parasti NULL var pārbaudīt, izmantojot ptr == 0, bet ir gadījumi, kad tas var radīt problēmas. Varbūt vēl svarīgāk ir tas, ka, izmantojot NULL, kļūst skaidrs, ka strādājat ar norādēm citiem cilvēkiem, kuri lasa jūsu kodu.

Padomi

Šo reģistrēšanos varat izmantot cilpu laikā tāpat kā jebkuru citu: kamēr (NULL == ptr) {

Ieteicams: