Menu
Coddy logo textTech

Нулевые указатели

Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 4 из 56.

Когда вы объявляете указатель, он не начинает автоматически указывать на что-то осмысленное. Неинициализированный указатель содержит случайные адреса памяти, что может привести к серьезным ошибкам при попытке его использования. Именно здесь нулевые указатели становятся необходимыми для безопасного программирования.

Нулевой указатель — это указатель, который явно ни на что не указывает. В современном C++ вы создаете нулевой указатель, инициализируя его с помощью nullptr:

int* ptr = nullptr;  // теперь ptr является нулевым указателем

Ключевое слово nullptr указывает на то, что указатель не ссылается ни на какой допустимый адрес памяти. Это гораздо безопаснее, чем оставлять указатель неинициализированным, так как вы можете проверить, является ли указатель нулевым, прежде чем пытаться его разыменовать.

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

if (ptr != nullptr) {
    // Здесь безопасно использовать *ptr
    int value = *ptr;
}

Эта практика предотвращает аварийное завершение вашей программы из-за обращения к недопустимым областям памяти. Всегда инициализируйте указатели значением nullptr при их объявлении и проверяйте на null перед разыменованием.

challenge icon

Задание

Легко

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

Будут предоставлены следующие входные данные:

  • Строка, которая будет иметь значение либо "valid", либо "null"

Ваша программа должна:

  1. Объявить целочисленную переменную с именем data и инициализировать ее значением 42
  2. Объявить указатель с именем ptr
  3. Если входная строка равна "valid", присвоить адрес data указателю ptr
  4. Если входная строка равна "null", присвоить nullptr указателю ptr
  5. Использовать оператор if для проверки того, что ptr не является нулевым, прежде чем пытаться его использовать
  6. Если указатель не является нулевым, вывести значение, на которое он указывает
  7. Если указатель нулевой, вывести сообщение о безопасности

Используйте следующий точный формат вывода:

Value: [value]

Для нулевых указателей используйте этот формат:

Pointer is null - cannot dereference

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

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Чтение входных данных
    string input;
    cin >> input;
    
    // Объявление переменной data
    int data = 42;
    
    // TODO: Напишите свой код здесь
    // - Объявите указатель с именем ptr
    // - Проверьте входные данные и присвойте ptr соответствующее значение
    // - Используйте оператор if для безопасной проверки и использования указателя
    
    return 0;
}
quiz iconПроверьте себя

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

Все уроки раздела Логика и управление потоком