![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хехехе
inc(665) © (2002-06-04 23:07:00)Что такое ^Pointer?
Digitman (2002-06-05 15:09:00) [1]Прошу прощения, последняя фраза неверна, должно быть :
.. и как ему следует интерпретировать разыменуемый операнд, если он - кардинального типа
Игорь Шевченко (2002-06-05 15:07:00) [2]Digitman © (05.06.02 15:05)
Что в С можно - я знаю :-)
Что в паскале - только что узнал :-))
Digitman (2002-06-05 15:05:00) [3]>Игорь Шевченко
Общая суть такая :
Компилятору "по барабану", что, сколько раз и в какой последовательности разыменовывается.
Все, что нужно ему при этом - знать, что конкретно разыменовывается (разыменованию могут быть подвергнуты любые типы, явно/косвенно происходящие от указательных либо приводимые к таковым Cardinal-типы) и как следует интерпретировать результат разыменования, если разыменуемое значение - кардинального типа.
Игорь Шевченко (2002-06-05 13:27:00) [4]Digitman © (05.06.02 12:38)
Не знал, спасибо за науку :-)
Digitman (2002-06-05 12:38:00) [5]>kaif © (05.06.02 11:30)
можно.
пример :
type
PPointer = ^Pointer;
var
i, k: Integer;
pi: Pointer;
ppi: PPointer;
...
i := 5;
pi := @i;
ppi := @pi;
k := Integer(ppi^^);
Игорь Шевченко (2002-06-05 11:36:00) [6]Нельзя, это не С :-)
kaif (2002-06-05 11:30:00) [7]Кстати, а можно это потом два раза разыменовать?
Типа написать так:
pp^^
:)
Виктор Щербаков (2002-06-05 10:28:00) [8]inc(665) (05.06.02 10:21)
А ты вникай! :)
В переменной типа PPointer будет храниться адрес переменной типа Pointer, в которой, в свою очередь, будет хранится какой-то другой адрес.
inc(665) (2002-06-05 10:21:00) [9]неа ;(
Виктор Щербаков (2002-06-05 09:13:00) [10]Ну
type
PPointer = ^Pointer;
это тип - указатель на указатель. Понятно?
inc(665) (2002-06-05 09:04:00) [11]Зачем он нужен .. я непонял ничего.
Прошу вас объяснитепожалуйсто...
Digitman (2002-06-05 08:45:00) [12][NIKEL]
Это не разыменование. Это - тип, определяющий косвенную адресацию данных указанного типа.
type
PPointer = ^Pointer;
var
p: Pointer;
pp: PPointer;
...
pp^ := p; // вот это - разыменование
p := pp^; // и вот это - тоже разыменование
MBo (2002-06-05 06:48:00) [13]Указатель - переменная, содержащая в себе некий адрес.
Указатель на указатель - адрес уже этой переменной
[NIKEL] (2002-06-04 23:15:00) [14]хм... а что у тебя просто Pointer?
если указатель, то это его разименование или (Pascal) разрешение указателя