![]() |
|
|
#1
|
||||
|
||||
![]() Код:
var Form1: TForm1; p:pointer; p1,p2:pointer; Str:String; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Str:='666'; p1:=pointer(Str); p2:=@pointer(Str); Чем отличается содержимое p1 и p2 ? Skype: Lotles-XXXX ![]() Последний раз редактировалось Lotles, 13.10.2009 в 17:26. |
#2
|
||||
|
||||
![]() Что никто не знает?
Skype: Lotles-XXXX ![]() |
#3
|
||||
|
||||
![]() Я знаю, оба указателя, оба бессмысленные.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
||||
|
||||
![]() Цитата:
var Код:
Form1: TForm1; S:String; p2:pointer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin S:='Test'; p2:=pointer(S); end; end. Скажите что находится в p2 ??? Skype: Lotles-XXXX ![]() |
#5
|
||||
|
||||
![]() Странный ты, видимо читать не любишь.
В дельфи строка тупо указатель, первые четые байта - смещение, потом данные #0 оканчивающиеся. А интерпритатор делает их удобными тебе (строки). Так вот в p2 у тебя указатель на указатель на строку, т.е. бессмысленный А вот если ты сделаешь: Код:
p2:=@s[1]; Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
||||
|
||||
![]() Спасибо за подробное изложение
но p2:=pointer(S) - это указатель на указатель на строку как вы сказали, а указатель в моем понимании это адрес, поэтому я запутался, когда вспомнил про p1:=@S , так и не пойму, чем отличается их содержимое ??? Skype: Lotles-XXXX ![]() Последний раз редактировалось Lotles, 18.10.2009 в 18:42. |