Как да проверите нула в C: 7 стъпки (със снимки)

Съдържание:

Как да проверите нула в C: 7 стъпки (със снимки)
Как да проверите нула в C: 7 стъпки (със снимки)

Видео: Как да проверите нула в C: 7 стъпки (със снимки)

Видео: Как да проверите нула в C: 7 стъпки (със снимки)
Видео: 8 НЕДОПУСТИМИ ГРЕШКИ С ВАШИЯ СТИЛ!!! 2024, Може
Anonim

В C NULL е символна константа, която винаги сочи към несъществуваща точка в паметта. Въпреки че много програмисти го третират като 0, това е опростяване, което може да ви спъне по -късно. Най -добре е директно да проверите указателите си спрямо NULL и да използвате 0 в други контексти. Това поддържа кода ви чист и лесен за разбиране, тъй като ще знаете, че работите с указатели всеки път, когато видите NULL.

Стъпки

Част 1 от 2: Извършване на нулева проверка

Проверете Null в C Стъпка 1
Проверете Null в C Стъпка 1

Стъпка 1. Използвайте стандартния нулев код за проверка

По -долу е най -очевидният начин да напишете нулев чек. Ще използваме птр в тази статия като име на показалеца, който проверявате.

  • ако (ptr == NULL)

    {

    // код, ако показалецът е NULL

    } else {

    // код, ако не е NULL

    }

Проверете Null в C Стъпка 2
Проверете Null в C Стъпка 2

Стъпка 2. Тествайте за всякаква стойност, освен NULL

Понякога е по -удобно вместо това да се тества за неравенство. Тук няма изненади:

  • if (ptr! = NULL) {

    // код, ако не е NULL

    }

Проверете Null в C Стъпка 3
Проверете Null в C Стъпка 3

Стъпка 3. Първо напишете NULL, за да избегнете грешки (по избор)

Основният недостатък на метода PTR == NULL е възможността вместо това случайно да въведете ptr = NULL, като присвоите стойността NULL на този показалец. Това може да причини силно главоболие. Тъй като тестването за (не) равенство третира операндите симетрично, можете да получите точно същия резултат чрез писане ако (NULL == ptr) вместо. Това е по-устойчиво на печатни грешки, тъй като случайно NULL = ptr създава проста грешка при компилиране.

Това изглежда малко неудобно за някои програмисти, но е напълно валидно. Кой подход ще използвате зависи само от личните предпочитания и от това колко добър е вашият компилатор при откриването на грешката if (ptr = NULL)

Проверете Null в C Стъпка 4
Проверете Null в C Стъпка 4

Стъпка 4. Проверете дали променливата е истина

Една проста ако (ptr) проверява дали ptr е ИСТИНА. Той ще върне FALSE, ако ptr е NULL, или ако ptr е 0. Разграничението няма значение в много случаи, но имайте предвид, че те не са идентични във всички архитектури.

Обратното на това е ако (! ptr), което ще върне TRUE, ако ptr е FALSE.

Част 2 от 2: Избягване на грешки

Проверете Null в C Стъпка 5
Проверете Null в C Стъпка 5

Стъпка 1. Задайте показалец, преди да проверите за NULL

Една често срещана грешка е да се приеме, че новосъздаденият показалец има стойност NULL. Това не е истина. Неназначеният показалец все още сочи към адрес на паметта, само не този, който сте посочили. Обичайна практика е да зададете новосъздадени или ново освободени указатели на NULL, за да сте сигурни, че не използвате случайно този безполезен адрес.

  • Избягвайте тази грешка:

    char *ptr;

    ако (ptr == NULL)

    {

    // Това ще върне FALSE. На показалеца е присвоена валидна стойност.

    }

  • Вместо това напишете:

    char *ptr = NULL; // Това присвоява показалеца на NULL

    ако (ptr == NULL)

    {

    // Това ще върне TRUE, ако показалецът не е преназначен.

    }

Проверете Null в C Стъпка 6
Проверете Null в C Стъпка 6

Стъпка 2. Обърнете внимание на функциите, които биха могли да върнат NULL

Ако функция може да върне NULL, помислете дали това е възможно и дали това би причинило проблеми по -късно във вашия код. Ето пример за функцията malloc, използваща нулева проверка (ако (ptr)), за да се гарантира, че обработва само указатели с валидни стойности:

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

    if (ptr) {

    int i;

    за (i = 0; i <N; ++ i)

    ptr = i;

    }

Проверете Null в C Стъпка 7
Проверете Null в C Стъпка 7

Стъпка 3. Разберете, че NULL е 0, но винаги трябва да използвате NULL вместо 0, когато работите с указатели за по -голяма яснота

Исторически C представлява NULL като числото 0 (тоест 0x00). В днешно време това може да стане малко по -сложно и варира в зависимост от операционната система. Обикновено можете да проверите за NULL с помощта ptr == 0, но има ъглови случаи, при които това може да причини проблем. Може би по -важното е, че използването на NULL прави очевидно, че работите с указатели за други хора, които четат вашия код.

Съвети

Можете да използвате това чекиране докато цикли, както всеки друг: while (NULL == ptr) {

Препоръчано: