指針是存放指定類型(或未定義類型)變量內(nèi)存地址的變量,因此指針間接引用一個值,。定義指針不需用特定的關(guān)鍵字,,而用一個特殊字符,這個特殊字符是脫字符號(^),,見下例: type 一旦你定義了指針變量,,你就可以用@ 符號把另一個相同類型變量的地址賦給它。見下例: var 如果定義了一個指針P,,那么P表示指針?biāo)赶虻膬?nèi)存地址,而P^表示內(nèi)存所存儲的實際內(nèi)容,。因此,,在上面的代碼中, P^ 與X相等,。 除了表示已分配內(nèi)存的地址外,,指針還能通過New 例程在堆中動態(tài)分配內(nèi)存,不過當(dāng)你不需要這個指針時,,你也必須調(diào)用Dispose 例程釋放你動態(tài)分配的內(nèi)存,。 var 如果指針沒有值,你可以把nil 賦給它,。這樣,,你可以通過檢查指針是否為nil 判斷指針當(dāng)前是否引用一個值。這經(jīng)常會用到,,因為訪問一個空指針的值會引起一個訪問沖突錯誤,,也就是大家知道的“一般保護錯”(GPF)。 Delphi 還定義了一個Pointer 數(shù)據(jù)類型,,它表示無類型的指針(就象C語言中的void* ),。如果你使用無類型指針,你應(yīng)該用GetMem 例程,,而不是New例程,,因為GetMem 例程能用于內(nèi)存分配大小不確定的情況。 實際上,,Delphi 中必須使用指針的情況很少,,這是Delphi開發(fā)環(huán)境一個誘人的優(yōu)點。雖然如此,,若要進行高級編程和完全理解Delphi 對象模型,,理解指針是很重要的,因為Delphi 對象模型在幕后使用了指針。 注意:雖然在Delphi中不常使用指針,,但是你經(jīng)常會用一個極為相似的結(jié)構(gòu)--引用(references),。每個對象實例實際上是一個隱含的指針,或說是對其實際數(shù)據(jù)的引用,,利用引用,,你能象用其他數(shù)據(jù)類型一樣使用對象變量。 |
|