Обсуждение:Висячий указатель
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Ссылка и указатель – не одно и то же
[править код]Существуют языки, в которых эти понятия различны, но близки. Указатель – нечто, во что завёрнут адрес ячейки памяти, позволяющее как косвенно адресовать её, так и изменить сам адрес, в результате чего указатель будет указывать уже на другую ячейку, и даже освободить память, на которую указывает указатель. Указатель может быть и константным, тогда изменить адрес нельзя. Но можно присвоить константный указатель обычному, а потом помять его значение. А ссылка – нечто, во что завёрнут разыменованный константный указатель, по которому нельзя освобождать память. Главное отличие ссылки даже от константного указателя на защищённую память в том, что для косвенной адресации памяти по указателю его требуется явно разыменовать, а ссылка уже разыменована и для адресации памяти разыменовывать её ещё раз уже не нужно. И хотя на низком уровне адресация остаётся косвенной, но на высоком уровне эта косвенность оказывается неявной, а при использовании указателя – явной. Есть языки, в которых есть указатели, но нет ссылок. О языках, на которых оба понятия существуют и совпадают мне не известно, также как и о языках, где есть ссылки, но нет указателей. 31.135.43.252 11:36, 23 февраля 2020 (UTC)