Что такое null/nil в C++ и как с ним работать?
Вопрос: Что такое null/nil в C++ и как с ним работать?
Коллеги, привет! Перехожу на C++ после Python и Java и никак не могу понять концепцию null/nil в этом языке. В Python есть None, в Java — null, а в C++ я встречаю и nullptr, и NULL, и просто 0. Это одно и то же? В каких случаях что использовать?
Пробовал писать такой код:
#include <iostream>
void foo(int* ptr) {
if (ptr == NULL) {
std::cout << "Pointer is NULL" << std::endl;
}
}
int main() {
int* p = nullptr;
foo(p);
return 0;
}Код компилируется, но я не уверен, что это правильно. Также я слышал про std::optional — это вообще другая история? Или это современная замена null? Ожидаю получить чёткое объяснение: что из перечисленного является «нулевым указателем» в C++, как правильно инициализировать указатели «ничем», и есть ли в C++ аналог null из Java/Python для ссылок (не указателей)? Буду благодарен за примеры с nullptr, NULL, 0 и std::optional.
Ответов пока нет.
Войдите чтобы оставить ответ