Как проверить нулевое значение в C: 7 шагов (с изображениями)

Оглавление:

Как проверить нулевое значение в C: 7 шагов (с изображениями)
Как проверить нулевое значение в C: 7 шагов (с изображениями)

Видео: Как проверить нулевое значение в C: 7 шагов (с изображениями)

Видео: Как проверить нулевое значение в C: 7 шагов (с изображениями)
Видео: Как изменить размер изображения в Гимп - увеличить или уменьшить. Урок Gimp для новичков 2024, Май
Anonim

В C NULL - это символическая константа, которая всегда указывает на несуществующую точку в памяти. Хотя многие программисты считают его равным 0, это упрощение может сбить вас с толку позже. Лучше всего напрямую проверять ваши указатели на NULL и использовать 0 в других контекстах. Это сохраняет ваш код чистым и легким для понимания, поскольку вы будете знать, что работаете с указателями каждый раз, когда видите NULL.

Шаги

Часть 1 из 2: Выполнение нулевой проверки

Проверить Null в C, шаг 1
Проверить Null в C, шаг 1

Шаг 1. Используйте стандартный код нулевой проверки

Ниже приводится наиболее очевидный способ написать нулевую проверку. Мы будем использовать ptr в этой статье в качестве имени проверяемого указателя.

  • если (ptr == NULL)

    {

    // код, если указатель NULL

    } еще {

    // код, если не 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), который вернет ИСТИНА, если ptr имеет значение ЛОЖЬ.

Часть 2 из 2: Как избежать ошибок

Проверить Null на C, шаг 5
Проверить Null на C, шаг 5

Шаг 1. Установите указатель перед проверкой на NULL

Одна из распространенных ошибок - предположить, что вновь созданный указатель имеет значение NULL. Это неправда. Неназначенный указатель по-прежнему указывает на адрес памяти, но не на тот, который вы указали. Обычно для вновь созданных или недавно освобожденных указателей используется значение NULL, чтобы убедиться, что вы случайно не используете этот бесполезный адрес.

  • Избегайте этой ошибки:

    char * ptr;

    если (ptr == NULL)

    {

    // Это вернет ЛОЖЬ. Указателю присвоено допустимое значение.

    }

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

    char * ptr = NULL; // Это присваивает указателю значение NULL

    если (ptr == NULL)

    {

    // Это вернет ИСТИНА, если указатель не был переназначен.

    }

Проверить 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, как и любые другие: while (NULL == ptr) {

Рекомендуемые: