Menu
Coddy logo textTech

Указатели NULL

Часть раздела Logic & Flow путешествия по C на Coddy — урок 5 из 63.

Иногда вам нужно объявить указатель, но у вас нет подходящего адреса памяти, чтобы сразу его присвоить. В таких ситуациях важно инициализировать указатель специальным значением, называемым NULL.

NULL-указатель — это указатель, который не указывает ни на какой допустимый адрес памяти. В языке C NULL обычно определяется как 0 или (void*)0. Когда вы инициализируете указатель значением NULL, вы явно заявляете, что в данный момент он не указывает ни на что полезное.

int *ptr = NULL;    // Инициализируем указатель значением NULL
printf("%p", ptr);  // Это выведет 0 или (nil)

Инициализация указателей значением NULL считается хорошей практикой программирования, поскольку это предотвращает содержание в указателе случайных «мусорных» значений. Неинициализированный указатель может содержать любой случайный адрес памяти, что может привести к непредсказуемому поведению, если вы случайно попытаетесь его использовать.

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

challenge icon

Задание

Легко

Напишите программу на языке C, которая демонстрирует правильную инициализацию и проверку указателей на NULL. Ваша программа должна:

  1. Объявить указатель на целое число с именем safe_ptr и инициализировать его значением NULL
  2. Объявить указатель на символ с именем char_ptr и инициализировать его значением NULL
  3. Проверить, является ли safe_ptr равным NULL, используя оператор if, и вывести "safe_ptr is NULL", если это так
  4. Проверить, является ли char_ptr равным NULL, используя оператор if, и вывести "char_ptr is NULL", если это так
  5. Вывести адрес памяти, хранящийся в safe_ptr, используя printf со спецификатором формата %p
  6. Вывести адрес памяти, хранящийся в char_ptr, используя printf со спецификатором формата %p

Ваш вывод должен отображать результаты в следующем формате:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

Фактические адреса памяти будут отображаться как 0, (nil) или аналогичное представление NULL в зависимости от вашей системы, но формат и метки должны точно соответствовать показанным выше.

Шпаргалка

NULL-указатель — это указатель, который не указывает ни на какой допустимый адрес памяти. В языке C NULL обычно определяется как 0 или (void*)0.

Инициализируйте указатели значением NULL, чтобы предотвратить появление случайных «мусорных» значений:

int *ptr = NULL;    // Инициализация указателя значением NULL
printf("%p", ptr);  // Это выведет 0 или (nil)

Проверяйте, является ли указатель NULL, перед его использованием, чтобы предотвратить сбои программы:

if (ptr == NULL) {
    // Безопасная обработка случая с NULL
}

Попробуйте сами

#include <stdio.h>

int main() {
    // TODO: Напишите свой код здесь
    // Объявите и инициализируйте свои указатели
    // Проверьте, являются ли указатели NULL
    // Выведите требуемый результат
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow