char
成都創(chuàng)新互聯(lián)公司主營邗江網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,App定制開發(fā),邗江h(huán)5小程序制作搭建,邗江網(wǎng)站營銷推廣歡迎邗江等地區(qū)企業(yè)咨詢
就是character字符的簡寫
定義一個字符變量
far
一個字符變量在內(nèi)存中占一個字節(jié):)
far: 遠指針
在DOS下(實模式)地址是分段的,每一段的長度為64K字節(jié),剛好是16位(二進制的十六位)。
near指針的長度是16位的,所以可指向的地址范圍是64K字節(jié),通常說near指針的尋址范圍是64K。
far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16后再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M字節(jié)的偏移量。所以far指針的尋址范圍是1M字節(jié),超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1224,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。
如果沒有指定一個指針是near或far,那么默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數(shù)據(jù)段或程序段的數(shù)據(jù)交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。
什么時候使用far指針?
當使用小代碼或小數(shù)據(jù)存儲模式時,不能編譯一個有很多代碼或數(shù)據(jù)的程序。因為在64K的一個段中,不能放下所有的代碼與數(shù)據(jù)。為了解決這個問題,需要指定以far函數(shù)或far指針來使用這部分的空間(64K以外的空間)。許多庫函數(shù)就是顯式地指定為far函數(shù)的形式。far指針通常和farmalloc()這樣的內(nèi)存分配函數(shù)一起使用
如果學過匯編應該知道近指針和遠指針,far就是表示遠指針,其實還有關鍵字near,near表示16位尋址,指針長度16位,far表示20位尋址,指針長度20位。在32位系統(tǒng)中,內(nèi)存管理為4G平坦模式,統(tǒng)一用32位指針,因此far和near僅僅是兼容的需要。不少編譯器都直接這樣定義:
#define far
#define near
far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16后再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M字節(jié)的偏移量。所以far指針的尋址范圍是1M字節(jié),超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1244,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。 如果沒有指定一個指針是near或far,那么默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數(shù)據(jù)段或程序段的數(shù)據(jù)交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。 什么時候使用far指針? 當使用小代碼或小數(shù)據(jù)存儲模式時,不能編譯一個有很多代碼或數(shù)據(jù)的程序。因為在64K的一個段中,不能放下所有的代碼與數(shù)據(jù)。為了解決這個問題,需要指定以far函數(shù)或far指針來使用這部分的空間(64K以外的空間)。許多庫函數(shù)就是顯式地指定為far函數(shù)的形式。far指針通常和farmalloc()這樣的內(nèi)存分配函數(shù)一起使用參考資料: ;view_id=199 其實你只要記住,指針就是地址,和數(shù)組一樣,其實你寫代碼的時候可以先用數(shù)組 然后把數(shù)組換成指針