Другие языки программирования и технологии

Несколько вопросов по Делфи. что такое указатели и зачем они нужны, зачем нужна @ ,и что за тип Pointer.

что такое указатели и зачем они нужны, зачем нужна @ ,и что за тип Pointer.
Все значения переменных хранятся в памяти компьютера и имеют свой адрес в этой памяти и размер. Например, если объявить переменную x типа Integer, программа выделит ей кусок памяти размером в 4 байта, и этот кусок памяти будет иметь какой-то адрес (какой именно - программа сама решает) . В простых ситуациях тебе не надо думать о том, по какому адресу хранится переменная и какой она имеет размер. Но бывают случаи когда это нужно. Для таких случаев предусмотрен оператор @ - он позволяет получить адрес переменной в памяти. Pointer - это специальный тип, который позволяет хранить адреса.
Например, эта программа напечатает на экране адрес, по которому хранится в памяти значение переменной x.

var x: integer;
p: pointer;
begin
x := 1;
p := @x;
writeln(longint(p));
end.

Указатели нужны для тех случаев, когда приходится работать с памятью напрямую. Например, если тебе нужно выделить кусок памяти размером 100 байт и записать туда кучу разнотипных данных, а потом читать их оттуда.

Забыл сказать, что указатель - это как раз переменная типа Pointer. Правильное название такого указателя - нетипизированный, он позволяет хранить адрес любого участка памяти, любого размера, и ему неважно что за данные там хранятся. Есть еще другие указатели - типизированные, они могут ссылаться только на адреса переменных какого-то одного типа. Вот так объявляется типизированный указатель:
var p: ^Integer;
Данный указатель p может хранить только адреса переменных типа Integer и никаких других. Такой указатель не может ссылаться на произвольный участок памяти произвольной длины. А вот указатель типа Pointer - может.
БА
Бека Адамия
16 198
Лучший ответ
Книжку почитать религия не позволяет ?
*_
*_Moriarty _*
32 502
загуглись, бездельник