||
指針是一個(gè)特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個(gè)地址。
要搞清一個(gè)指針需要搞清指針的四方面的內(nèi)容:
指針的類型、指針?biāo)赶虻念愋、指針的值(或者叫指針(biāo)赶虻膬?nèi)存區(qū))、指針本身所占據(jù)的內(nèi)存區(qū)。
讓我們分別說明:
先聲明幾個(gè)指針放著做例子:
例一:
(1)、dim P as integer ptr
(2)、dim P as string ptr
(3)、dim P as integer ptr ptr
(4)、dim P() as integer ptr
說明:在Freebasic中聲明指針是用ptr(或pointer)這個(gè)關(guān)鍵字
Dim P as integer ptr ‘指針的類型是integer
Dim P as string ptr ‘指針的類型是string
接下來看指針?biāo)赶虻念愋?/span>
Dim P as integer ptr ‘指針?biāo)赶虻念愋褪?/span>integer
Dim p as string ptr ‘指針?biāo)赶虻念愋褪?/span>string
注:(1)指針的類型(即指針本身的類型)和指針?biāo)赶虻念愋褪莾蓚(gè)概念
(2)指針的類型與指針?biāo)赶虻念愋途哂邢嗤念愋?/span>
當(dāng)你對FB越來越熟悉時(shí),你會發(fā)現(xiàn),把與指針攪和在一起的"類型"這個(gè)概念分成 "指針的類型"和"指針?biāo)赶虻念愋?/span>"兩個(gè)概念,是精通指針的關(guān)鍵點(diǎn)之一。
指針的值----或者叫指針?biāo)赶虻膬?nèi)存區(qū)(地址)。指針的值是指針本身存儲的數(shù)值,這個(gè)值將被編譯器當(dāng)作一個(gè)地址,而不是一個(gè)一般的數(shù)值。
在32位程序里,所有類型的指針的值都是一個(gè)32位整數(shù),因?yàn)?/span>32位程序里內(nèi)存地址全都是32位長。
指針?biāo)赶虻膬?nèi)存區(qū)就是從指針的值所代表的那個(gè)內(nèi)存地址開始,長度為sizeof(指針?biāo)赶虻念愋?/span>)的一片內(nèi)存區(qū)。
以后,我們說一個(gè)指針的值是XX,就是相當(dāng)于說該指針指向了以XX為首地址的一片內(nèi)存域;
我們說一個(gè)指針指向了某地塊內(nèi)存區(qū)域,就相當(dāng)于說該指的值是這塊內(nèi)存區(qū)域的首地址。
注:指針?biāo)赶虻膬?nèi)存區(qū)和指針?biāo)赶虻念愋褪莾蓚(gè)完全不同的概念。
在例 一中,指針?biāo)赶虻念愋鸵呀?jīng)有了,但由于指針還未初始化,所以它所指向 的內(nèi)存區(qū)是不存在的,或者說是無意義的。
以后,每遇到一個(gè)指針,都應(yīng)該問問: 這個(gè)指針的類型是什么?指針指 的類型是什么? 該指針指向了哪里?(重點(diǎn)注意) 4 指針本身所占據(jù)的內(nèi)存區(qū) 指針本身占了多大的內(nèi)存? 你只要用函數(shù) sizeof(指針的類型)測一下 就知道了 。
在32位平臺里,指針本身占據(jù)了4個(gè)字節(jié)的長度。
指針本身占據(jù)的內(nèi)存這個(gè)概念在判斷一個(gè)指針表達(dá)式(后面會解釋)是否是左值時(shí)很有用。
下面用圖來展示可能會更清晰:
2、運(yùn)算符@和*
|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國
( 粵ICP備10043721號-1 )
GMT+8, 2025-7-13 03:10 , Processed in 0.078500 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.