Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Указатели или что?   Найти похожие ветки 

 
Tort   (2006-07-11 15:53) [0]

Всем привет! Кто нить  подскажет что как и для чего собственно нужны указатели в чем отличие @ от ^?


 
Игорь Шевченко ©   (2006-07-11 15:56) [1]


> Кто нить  подскажет


Справка обычно хорошо подсказывает. Или книжка.


 
Alien1769 ©   (2006-07-11 15:59) [2]

Недавно было. Полистай.

Нет быстрее найди слово указатели в этой конференции.


 
Mozgan   (2006-07-11 16:04) [3]

Легко вам, мастера!

А маленький примерчик не дадите ;)


 
Сергей М. ©   (2006-07-11 16:06) [4]


> в чем отличие @ от ^


@ - указание компилятору взять адрес некоего значения.
^ - указание компилятору взять значение по некоему адресу (разыменование указателя)


 
Mozgan   (2006-07-11 16:07) [5]

Спасибо! Но не доходит как использовать ^.
Прошу не ленитесь - покажите кусочек того счастья!


 
Плохиш ©   (2006-07-11 16:09) [6]

var pi:^integer; ... pi^:=1;


 
Mozgan   (2006-07-11 16:10) [7]

т.е. переменная может быть и не описана вначале, но можно сослаться?
Правильно ли я понял?


 
Сергей М. ©   (2006-07-11 16:11) [8]

Например, так:

var
 AddressOfSomeIntegerValue: PInteger;
 IntegerValue: Integer;

..

 IntegerValue := 5;
 AddressOfSomeIntegerValue := @IntegerValue;
 ShowMessage(IntToStr(AddressOfSomeIntegerValue^));


 
begin...end ©   (2006-07-11 16:12) [9]

> Tort   (11.07.06 15:53) [0]

> в чем отличие @ от ^?

Маша живёт на ул. Московской, в доме № 17.
Чтобы выяснить адрес Маши, нужно применить к Маше оператор @.
Чтобы выяснить, кто живёт в доме № 17, нужно применить к дому оператор ^.

@(Маша) = дом № 17.
(дом № 17)^ = Маша.
(@(Маша))^ := Маша.

И с переменными всё точно так же. Если нужно узнать адрес переменной в памяти, к ней нужно применить оператор @. А если нужно выяснить значение, находящееся в памяти по заданному адресу, нужно применить к этому адресу оператор ^.

var
 I: Integer;
 pI: PInteger;
begin
 I := 12345;
 pI := @I;
 // Теперь pI содержит адрес переменной I
 // Т.е. по адресу pI в памяти лежит значение 12345
 // Убедимся в этом:
 ShowMessage(IntToStr(pI^));

 pI^ := 67890;
 // А теперь по адресу pI расположено значение 67890
 // Т.е. значение переменной I изменилось, и она равна 67890
 // И в этом тоже убедимся:
 ShowMessage(IntToStr(I));
end.


 
Mozgan   (2006-07-11 16:14) [10]

Уважаемый begin...end !!!!
ОГРОМНОЕ спасибо!  Понятно так изложили что аж слеза от счастья на моей щеке! Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
6-1142864696
Alex_Delphi
2006-03-20 17:24
2006.07.30
Как програмно загрузить(передать) данные из FTP сервера


15-1151777769
kaif
2006-07-01 22:16
2006.07.30
С сегодняшнего дня рубль стал конвертируемым


15-1151932506
Ketmar
2006-07-03 17:15
2006.07.30
настройка локальной сети во FreeBSD под VMWare


2-1152692183
dima_kds
2006-07-12 12:16
2006.07.30
Rave Report


15-1151921987
Megabyte
2006-07-03 14:19
2006.07.30
Фрагментация данных и переиндексация в MSSQL