Menu
Coddy logo textTech

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

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

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

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

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

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

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

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

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

challenge icon

Задание

Легко

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

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

  • string, которая будет либо "valid", либо "null"

Твоя программа должна:

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

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

Value: [value]

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

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Проверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор C++