Можем ли мы сохранить значения в нулевом месте? - PullRequest
0 голосов
/ 30 января 2020

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

Кроме того, если мы не можем сохранить значения в нулевом местоположении, почему это так? (потому что в c ++, когда мы присваиваем 0 указателю, он указывает на ноль.)

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Можем ли мы сохранить значения в нулевом месте?

Вы можете хранить значения только в объектах. Объекты могут быть созданы только в выделенной памяти. Невозможно произвольно указать адрес памяти для выделения.

Я полагаю, что теоретически языковая реализация могла бы выбрать для сохранения объекта со сроком хранения c в адрес, который представляет нулевой указатель ценность. В таком случае объект будет храниться в «нулевом местоположении». Это было бы не очень типично.

0 голосов
/ 30 января 2020

Небрежно говоря, NULL или nullptr - это значение заполнителя для указателей, которые нигде не указывают. Вы не можете хранить значение нигде. Если вы попробуете что-то вроде этого:

int* p = nullptr;
*p = 5;

Скорее всего, ваша программа обработает sh (нет гарантии, что на самом деле не определено, что произойдет, если вы это сделаете).

An int* не хранит int. Он может указывать на int, который содержит значение. Для хранения int вам нужен объект int где-то, а не просто указатель:

int x = 0;
int* p = &x;
*p = 42;
...