Что такое null (None)?

Допустим у меня есть некое a равное null. С точки зрения памяти, что такое a? Ссылка на некий null? Просто пустое значение без ссылки? Ссылка на пустую ячейку памяти?

Различается ли реализация null (None) в разных языках, и если да, как?


Ответы (2 шт):

Автор решения: rotabor

Не нул - это ссылка на объект. Нул - это нет ссылки на объект. Обычно в переменную записывают 0, который и означает нул. null, None, Nothing - одно и то же, но реализация может быть разная. В принципе, любле значение, или диапазон значений, который, по договорённости, и означает нул.

→ Ссылка
Автор решения: αλεχολυτ

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

Основная концепция в том, что null, None, NULL, nullptr и т.д. используются для индикации несуществующего объекта.

Обычно где-то внутри это просто превращается в целочисленный нуль или нулевой адрес.

В C# null - значение по умолчанию для ссылочных типов данных. Типы значений не могут быть null, но их можно обернуть в Nullable для нужного эффекта.

В Python None представляется собой отдельный тип NoneType.

В C NULL является макросом и обычно просто соответствует целому числу 0. Хотя с C23 появился отдельный тип nullptr_t и значение nullptr почти как в С++, начиная с C++11.

→ Ссылка