小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

delphi 指針操作

 貌似小白 2013-01-22

指針是存放指定類型(或未定義類型)變量?jī)?nèi)存地址的變量,因此指針間接引用一個(gè)值。定義指針不需用特定的關(guān)鍵字,而用一個(gè)特殊字符,這個(gè)特殊字符是脫字符號(hào)(^),見(jiàn)下例:

type
  PointerToInt = ^Integer;

一旦你定義了指針變量,你就可以用@ 符號(hào)把另一個(gè)相同類型變量的地址賦給它。見(jiàn)下例:

var
  P: ^Integer;
  X: Integer;
begin
  P := @X;
  // change the value in two different ways
  X := 10;
  P^ := 20;  

如果定義了一個(gè)指針P,那么P表示指針?biāo)赶虻膬?nèi)存地址,而P^表示內(nèi)存所存儲(chǔ)的實(shí)際內(nèi)容。因此,在上面的代碼中, P^ 與X相等。

除了表示已分配內(nèi)存的地址外,指針還能通過(guò)New 例程在堆中動(dòng)態(tài)分配內(nèi)存,不過(guò)當(dāng)你不需要這個(gè)指針時(shí),你也必須調(diào)用Dispose 例程釋放你動(dòng)態(tài)分配的內(nèi)存。

var
  P: ^Integer;
begin
  // initialization
  New (P);
  // operations
  P^ := 20;
  ShowMessage (IntToStr (P^));
  // termination
  Dispose (P);
end;

如果指針沒(méi)有值,你可以把nil 賦給它。這樣,你可以通過(guò)檢查指針是否為nil 判斷指針當(dāng)前是否引用一個(gè)值。這經(jīng)常會(huì)用到,因?yàn)樵L問(wèn)一個(gè)空指針的值會(huì)引起一個(gè)訪問(wèn)沖突錯(cuò)誤,也就是大家知道的“一般保護(hù)錯(cuò)”(GPF)。

Delphi 還定義了一個(gè)Pointer 數(shù)據(jù)類型,它表示無(wú)類型的指針(就象C語(yǔ)言中的void* )。如果你使用無(wú)類型指針,你應(yīng)該用GetMem 例程,而不是New例程,因?yàn)镚etMem 例程能用于內(nèi)存分配大小不確定的情況。

實(shí)際上,Delphi 中必須使用指針的情況很少,這是Delphi開(kāi)發(fā)環(huán)境一個(gè)誘人的優(yōu)點(diǎn)。雖然如此,若要進(jìn)行高級(jí)編程和完全理解Delphi 對(duì)象模型,理解指針是很重要的,因?yàn)镈elphi 對(duì)象模型在幕后使用了指針。

注意:雖然在Delphi中不常使用指針,但是你經(jīng)常會(huì)用一個(gè)極為相似的結(jié)構(gòu)--引用(references)。每個(gè)對(duì)象實(shí)例實(shí)際上是一個(gè)隱含的指針,或說(shuō)是對(duì)其實(shí)際數(shù)據(jù)的引用,利用引用,你能象用其他數(shù)據(jù)類型一樣使用對(duì)象變量。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多