當前位置:首頁 » 編程語言 » c語言中far是什麼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中far是什麼

發布時間: 2022-05-06 00:15:06

1. 在c語言程序組裡面看見 「@far」。問下「@」是什麼意思,其什麼作用

非標准C的@far 和COSMIC 的 C編譯器相關聯的
在STM8中,指定地址的長度可以有3種方式,@tiny使用1個位元組表示地址,只能定址地址范圍0x00~0xFF;@near使用2個位元組表示地址,只能定址地址范圍0x0000~0xFFFF;@far使用3個位元組表示地址,定址地址范圍0x000000~0xFFFFFF

2. C語言中,指針的意思是什麼FAR指針又是什麼

far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M位元組的偏移量。所以far指針的定址范圍是1M位元組,超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1244,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。 如果沒有指定一個指針是near或far,那麼默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數據段或程序段的數據交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。 什麼時候使用far指針? 當使用小代碼或小數據存儲模式時,不能編譯一個有很多代碼或數據的程序。因為在64K的一個段中,不能放下所有的代碼與數據。為了解決這個問題,需要指定以far函數或far指針來使用這部分的空間(64K以外的空間)。許多庫函數就是顯式地指定為far函數的形式。far指針通常和farmalloc()這樣的內存分配函數一起使用參考資料: http://www.turinger.com/forum_view.asp?forum_id=4&view_id=199 其實你只要記住,指針就是地址,和數組一樣,其實你寫代碼的時候可以先用數組 然後把數組換成指針

3. C/C++中near和far的區別

vc++中有好多這樣的類型的,我教你如何自己在vc中查找自己陌生的關鍵字或類型吧:
1)您在vc環境中的「編輯」子菜單點擊「在文件中查找」這個菜單項
2)在「查找什麼」編輯框里輸入「near」
3)在最下面的「在附加文件夾中查找」中,把目錄「X:\VC98\MFC\SRC」(X代表您安裝vc6.0的盤符)添加進來,目的是讓系統除了查找默認的目錄外,還查找這個目錄里的文件有沒有你要找的東西,然後點擊「查找」按鈕
4)注意「查找對話框」關閉後,系統會在代碼編輯框下面的輸出框中顯示查到的匹配項
5)裡面可能會有好多的匹配項,您隨便找到一個「near」的匹配項後雙擊這一行
6)注意代碼編輯框會跳到您剛才雙擊的那個文件中,同時定位到那個「near」,第一次查找應該並不是有關「near」的詳細定義,而是這個文件里用到了「near」,您需要滑鼠右鍵這個「near」,在彈出子菜單中選擇「轉到near的定義」
7)經過以上的步驟,最終定位到了您要查找的這個「near」的文件及准確定義

P.S. 1)near、far在X:\VC98\Include\WINDEF.H文件中被定義為#define near
#define far,也就是什麼都沒定義
2)在vc中有很多這樣只起表示而沒有實際內容的宏定義的,它們的作用是讓vc編譯器來判別的,所以在很多情況下,建議您寫代碼時還是要加上這些空定義的宏,否則編譯器會報錯。
3)near、far、huge在C++里我沒學到過這樣的關鍵字或類型定義,您應該說的是VC吧!
4)VC是微軟給程序員用來寫WINDOWS的應用程序的,所以VC中的編譯器,預處理器等微軟都是加了很多其它編譯器沒有的東西的,譬如支持微軟自己的宏定義,其它編譯器無法識別的,加了微軟的宏定義,只是想讓程序盡可能少出錯,進行必要的檢查。所以作為語言規范,C++本身好像並沒有near、far、huge這些東西吧,C++在UNIX里好像從來沒用過near、far、huge吧。相反大公司為了支持UNIX編程,也加了很多微軟沒有的概念在它們自己的編程環境中。
5)關於\VC98\MFC\SRC里是微軟給的許多源代碼文件,所以在查找您要的東西時,把這個目錄包含進來,盡管最終您要找的東西也許不會在這個目錄里,但通過您讓VC系統查找這個目錄後,在很多情況下才能最終定位到您要的那個文件。而且,您有時間有興趣最好了解下這個目錄里的源代碼文件,很有用的。
6)在查找您要的東西前,您可能沒有編譯過原來在vc中打開的源代碼,所以當查找到我所說的第六步是會彈出「提示框」,直接點確定要編譯就行了,等編譯完,自動會進入第六步。

4. FAR的C語言

far: 遠指針
在DOS下(實模式)地址是分段的,每一段的長度為64K位元組,剛好是16位(二進制的十六位)。
near指針的長度是16位的,所以可指向的地址范圍是64K位元組,通常說near指針的定址范圍是64K。
far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M位元組的偏移量。所以far指針的定址范圍是1M位元組,超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1224,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。
如果沒有指定一個指針是near或far,那麼默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數據段或程序段的數據交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。
什麼時候使用far指針?
當使用小代碼或小數據存儲模式時,不能編譯一個有很多代碼或數據的程序。因為在64K的一個段中,不能放下所有的代碼與數據。為了解決這個問題,需要指定以far函數或far指針來使用這部分的空間(64K以外的空間)。許多庫函數就是顯式地指定為far函數的形式。far指針通常和farmalloc()這樣的內存分配函數一起使用

5. C語言中函數前面的far是什麼意思

如果學過匯編應該知道近指針和遠指針,far就是表示遠指針,其實還有關鍵字near,near表示16位定址,指針長度16位,far表示20位定址,指針長度20位。在32位系統中,內存管理為4G平坦模式,統一用32位指針,因此far和near僅僅是兼容的需要。不少編譯器都直接這樣定義:
#define far
#define near

6. 請問C語言中 char far 是什麼意思

near指針和far指針?

在DOS下(實模式)地址是分段的,每一段的長度為64K位元組,剛好是16位(二進制的十六位)。
near指針的長度是16位的,所以可指向的地址范圍是64K位元組,通常說near指針的定址范圍是64K。
far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M位元組的偏移量。所以far指針的定址范圍是1M位元組,超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1244,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。
如果沒有指定一個指針是near或far,那麼默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數據段或程序段的數據交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。

什麼時候使用far指針?

當使用小代碼或小數據存儲模式時,不能編譯一個有很多代碼或數據的程序。因為在64K的一個段中,不能放下所有的代碼與數據。為了解決這個問題,需要指定以far函數或far指針來使用這部分的空間(64K以外的空間)。許多庫函數就是顯式地指定為far函數的形式。far指針通常和farmalloc()這樣的內存分配函數一起使用

7. C++中的FAR是什麼意思

一般被稱作指針運算符,又叫反向取址運算符,與&作用相反 指針,其實就是一個變數,只是它的值是另一個變數或是常量的地址罷了,而*的作用便是把這個地址所存放的值取出

8. C/C++中的far關鍵字是什麼意思

far是WINDOW3.2的前的產物,也就是說是在大的定址區做16位編程時所用到的,在WIN32平台下這個關鍵字已不再需要,因為已經統一為FAR型了,無論你加還是不加.

9. 在C語言中,「far」是在哪種情況下使用的

int far 或者 void far 表示要編譯器給聲明的這些量分配在 遠處的存儲器(RAM)中,即分配到 64K 以外的 存儲地址中。

64K 作為一個「段」(Segment),是 PC 機 80x86 時期的老概念。超過64K 就是 「遠」, FAR 就是 「遠」de 英文。

編譯器對near(近)和far(遠)的處理略有不同。

新的編譯器默認應當是遠。

10. 我在查c語言圖形庫函數時,原形里含有的「far」表示什麼意思

哈哈 想了半天才想起來far是和near對應的,就是一般程序的函數調用都在64k地址范圍內的,就是16位定址就夠了,但是當代碼比較龐大時,16位就可能不夠了.far就代表32位定址,函數的本質就是個地址,指針的本質也是個地址,所以就有了定址的問題,為了確認我還搜了一下呵呵 參見指針的:)

<P> 8、near指針和far指針<BR>在DOS下(實模式)地址是分段的,每一段的長度為64K位元組,剛好是16位(二進制的十六位)。<BR>near指針的長度是16位的,所以可指向的地址范圍是64K位元組,通常說near指針的定址范圍是64K。<BR>far指針的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指針是20位的長度。)即可得到far指針的1M位元組的偏移量。所以far指針的定址范圍是1M位元組,超過了一個段64K的容量。例如一個far指針的段地址為0x7000,偏移量為0x1244,則該指針指向地址0x71224.如果一個far指針的段地址是0x7122,偏移量為0x0004,則該指針也指向地址0x71224。
如果沒有指定一個指針是near或far,那麼默認是near。所以far指針要顯式指定。far指針工作起來要慢一些,因為每次訪問一個far指針時,都要將數據段或程序段的數據交換出來。另外,far指針的運算也比較反常,例如上面講到的far指針指向同一個地址,但是比較的結果卻不相同。