C -s on NULL sümboolne konstant, mis osutab alati mälus olematule punktile. Kuigi paljud programmeerijad peavad seda võrdseks nulliga, võib see lihtsustada teid hiljem. Parim on kontrollida oma näpunäiteid otse NULL -i vastu ja kasutada 0 -d teistes kontekstides. See hoiab teie koodi puhtana ja kergesti arusaadavana, kuna teate, et töötate kursoritega iga kord, kui näete NULL -i.
Sammud
Osa 1: Nullkontrolli läbiviimine
Samm 1. Kasutage standardset nullkontrolli koodi
Järgmine on kõige ilmsem viis nullšeki kirjutamiseks. Me kasutame ptr selles artiklis kontrollitava kursori nimena.
-
kui (ptr == NULL)
{
// kood, kui osuti on NULL
} muud {
// kood, kui mitte NULL
}
Samm 2. Kontrollige mis tahes väärtust peale NULL
Mõnikord on mugavam hoopis ebavõrdsust testida. Siin pole üllatusi:
-
kui (ptr! = NULL) {
// kood, kui mitte NULL
}
Samm 3. Vigade vältimiseks kirjutage kõigepealt NULL (valikuline)
PTR == NULL meetodi peamine puudus on võimalus, et sisestate kogemata ptr = NULL, määrates sellele kursorile väärtuse NULL. See võib põhjustada tõsist peavalu. Kuna (mitte) võrdsuse testimine käsitleb operande sümmeetriliselt, saate kirjutades täpselt sama tulemuse kui (NULL == ptr) selle asemel. See on kirjavigade suhtes vastupidavam, kuna juhuslik NULL = ptr tekitab lihtsa kompileerimisvea.
Mõne programmeerija jaoks tundub see pisut ebamugav, kuid see on täiesti kehtiv. Millist lähenemisviisi kasutate, sõltub ainult isiklikest eelistustest ja sellest, kui hea on teie kompilaator vea if (ptr = NULL) tuvastamisel
Samm 4. Kontrollige, kas muutuja on tõene
Lihtne kui (ptr) testib, kas ptr on tõene. See tagastab väärtuse VÄÄR, kui ptr on NULL või kui ptr on 0. Paljudel juhtudel pole sellel vahet, kuid pidage meeles, et need pole kõikides arhitektuurides identsed.
Selle vastupidi on kui (! ptr), mis tagastab tõese, kui ptr on VÄÄR.
Osa 2: Vigade vältimine
Samm 1. Enne NULL -i kontrollimist seadke kursor
Üks levinud viga on eeldada, et äsja loodud kursoril on NULL väärtus. See ei ole tõsi. Määramata kursor osutab endiselt mäluaadressile, mitte ainult teie määratud aadressile. See on tavaline tava, et äsja loodud või äsja vabastatud näpunäidete väärtuseks määratakse NULL, veendumaks, et te ei kasuta juhuslikult seda kasutut aadressi.
-
Vältige seda viga:
char *ptr;
kui (ptr == NULL)
{
// See tagastab vale. Kursorile on määratud kehtiv väärtus.
}
-
Selle asemel kirjutage:
char *ptr = NULL; // See määrab kursori väärtuseks NULL
kui (ptr == NULL)
{
// See tagastab tõe, kui kursorit pole uuesti määratud.
}
Samm 2. Pöörake tähelepanu funktsioonidele, mis võivad NULL -i taastada
Kui funktsioon saab NULL -i tagastada, mõelge, kas see on võimalus ja kas see võib teie koodis hiljem probleeme tekitada. Siin on näide nullkontrolli kasutavast malloc -funktsioonist (kui (ptr)), et see töötaks ainult kehtivate väärtustega näpunäiteid:
-
int * ptr = malloc (N * sizeof (int));
kui (ptr) {
int i;
jaoks (i = 0; i <N; ++ i)
ptr = i;
}
Samm 3. Mõistke, et NULL on 0, kuid näpunäidetega töötades peaksite selguse huvides alati kasutama 0 asemel NULL -i
Ajalooliselt tähistas C NULL -i numbrina 0 (st 0x00). Tänapäeval võib see muutuda mõnevõrra keerukamaks ja varieeruda sõltuvalt opsüsteemist. Tavaliselt saate NULL -i kontrollida, kasutades ptr == 0, kuid on juhtumeid, kus see võib põhjustada probleeme. Võib -olla veelgi olulisem on see, et NULL -i kasutamine näitab, et töötate teiste teie koodi lugevate inimeste näpunäidetega.