Что такое null (None)?
Допустим у меня есть некое a равное null. С точки зрения памяти, что такое a?
Ссылка на некий null? Просто пустое значение без ссылки? Ссылка на пустую ячейку памяти?
Различается ли реализация null (None) в разных языках, и если да, как?
Ответы (2 шт):
Не нул - это ссылка на объект. Нул - это нет ссылки на объект. Обычно в переменную записывают 0, который и означает нул. null, None, Nothing - одно и то же, но реализация может быть разная. В принципе, любле значение, или диапазон значений, который, по договорённости, и означает нул.
Конечно, в разных языках реализации могут и будут различаться. Чем больше похожи языки друг на друга, тем ближе могут быть реализации.
Основная концепция в том, что null, None, NULL, nullptr и т.д. используются для индикации несуществующего объекта.
Обычно где-то внутри это просто превращается в целочисленный нуль или нулевой адрес.
В C# null - значение по умолчанию для ссылочных типов данных. Типы значений не могут быть null, но их можно обернуть в Nullable для нужного эффекта.
В Python None представляется собой отдельный тип NoneType.
В C NULL является макросом и обычно просто соответствует целому числу 0. Хотя с C23 появился отдельный тип nullptr_t и значение nullptr почти как в С++, начиная с C++11.