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

far和near是哪個c語言

發布時間: 2023-08-23 16:34:32

『壹』 c語言編程所用到的全部英語單詞

就32個英語單詞。如下參考:

1、數據類型關鍵字(8個)int 、short 、long、signed、unsigned、char 、float,、double

2、程序控制關鍵字(10個)

if 、else、switch、case、default、break、do 、while、 for、continue

3、函數及數據存儲關鍵字(6個)

void 、return、auto、register、static、 extern

4、構造數據類型關鍵字(5個)

struct、union、enum、typedef、sizeof

5、其它3個不常用(3個)

goto、const、 volatile

(1)far和near是哪個c語言擴展閱讀:

1、如果要定義一個存放20個英文的字元串,數組的長度應該是20+1,原因以後再討論。

2、一個中文漢字或全形的標點符號需要兩個字元寬度來存放。

3、變數名中的字母是區分大小寫的。比如 a 和 A 是不同的變數名,num 和 Num 也是不同的變數名。

4、include用法:

#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。

5、插入頭文件的內容

include命令告訴預處理程序將指定頭文件的內容插入到預處理程序命令的適當位置。有兩種方法來指定插入頭文件:

# include<文件名& gt;

#包括「文件名稱」

如果需要包含標准庫標頭或實現版本提供的標頭,則應使用第一種格式。

『貳』 C 語言中變數定義為near

這是歷史遺留問題,DOS系統運行於intel的8086/8088這個16位cpu,但這cpu有20條地址匯流排,16位的寄存器就無法直接定址20位的地址,於是搞出來一個段偏移的概念,把1M的內存空間按64K分段, 以段地址+偏移地址的方式實現20位地址。cpu有許多預先設計好的段寄存器,程序運行的時候,存放在數據段寄存器(DS)中的段地址被當作一個預設的段地址,這64K空間就被稱為近程空間(near)。既然有近程空間,那麼就有遠程空間:位於DS段以外的地址空間就叫遠程空間(far)。如果不顯式聲明,默認使用近程空間

unsigned char near variable; //在近程空間(DS段)創建一個變數 variable
unsigned char varible ; //沒有顯式聲明,同樣是near變數

對於unix/linux/windows這些32位操作系統,對內存的操作是線性的,也就沒有near和far的區別了

關於16位段內存的詳細內容,你可以參考8086/8088匯編語言以及16位的C語言系統手冊(比如Turbo C的程序員手冊)

『叄』 C語言中函數前面的far是什麼意思

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

『肆』 c語言中什麼叫標識符

或許你會將標識符和關鍵字混了。這里稍做分析。.1 關鍵字
所謂關鍵字就是已被Turbo C2.0本身使用, 不能作其它用途使用的字。例如關
鍵字不能用作變數名、函數名等。
Turbo C2.0有以下關鍵字:
Turbo C2.0擴展的共11個
asm _cs _ds _es _ss cdecl
far near huge interrupt pascal
由ANSI標準定義的共32個
auto double int struct break else
long switch case enum register typedef
char extern return union const float
short unsigned continue for signed void
default goto sizeof volatile do if
while static


3.2 標識符
所謂標識符是指常量、變數、語句標號以及用戶自定義函數的名稱。 Turbo C
2.0標識符的定義十分靈活。作為標識符必須滿足以下規則:
1. 所有標識符必須由一個字母(a~z, A~Z)或下劃線(_)開頭;
2. 標識符的其它部分可以用字母、下劃線或數字(0~9)組成;
3. 大小寫字母表示不同意義, 即代表不同的標識符;
4. 標識符只有前32個字元有效;
5. 標識符不能使用Turbo C2.0的關鍵字。
下面舉出幾個正確和不正確的標識符:
正確 不正確
smart 5smart
_decision bomb?
key_board key.board
FLOAT float

『伍』 C語言近程型(near)和遠程型(far)的區別是什麼如題 謝謝了

DOS用一種分段結構來定址計算機的內存,每一個物理存儲位置都有一個可以用段一偏移量方式來訪問的相關地址。例如,下面就是一個典型的段式地址: A000:1234 冒號左邊的部分代表段地址(A000),冒號右邊的部分代表相對於段地址的偏移量。DOS下的每個程序都是按這種方式訪問內存的——盡管段一偏移量定址方法的機理對大多數C程序員來說是隱蔽的。 當你的程序被執行時,一個存放在數據段(DS)寄存器中的數據段地址將被賦給你的程序。這個預設的數據段地址指向一個64KB的內存空間,這個空間通常就被叫做近程型數據段。在這個近程型數據段空間中,你會找到程序的棧、靜態數據和近程堆。近程堆用來為程序啟動時所需的全局變數和其它數據元素分配內存,在這個空間中分配的任何數據都被叫做近程型數據。例如,下面的程序在程序啟動時從近程堆中分配了32KB的近程型數據: / * Note :Program uses the Medium memory model...* / # include <stdio. h> # include <alloc. h> # include <string. h> # include <stdlib. h> # include <dos. h> void main(void) ; void main(void) { char * near_data; near_data= (char * )malloc((32 * 1024) * sizeof(char)) ; if (near data= = (char * )NULL) { printf("Whoopsie ! Malloc failed! \n") ; exit(l) ; } strcpy (near_data, "This string is going to be. stored in the near heap") ; printf("Address of near_data : %P\n", ,&near_data) ; free (near_data) ; } 在上例中,near_data是一個字元指針,程序分配給它一個32KB的內存塊。在預設情況下,這個32KB的內存塊是從近程堆中分配的,並且相應的16位地址將被存放在字元指針near_data中。 現在,你已經知道什麼是近程型數據了,但你可能還不大明白什麼是遠程型數據,很簡單,遠程型數據就是位於預設數據段(第一個64KB數據段)以外的數據。下例中的程序從遠程型數據區(通常也叫做遠程堆)中分配了32KB的空間: / * Note:Program uses the Medium memory model... * / # include <stdio. h> # include <alloc. h> # include <string. h> # include <stdlib. h> #include <dos. h> void main(void) ; void main(void) { char far * far_data; far_data= (char far * )farmalloc((32 * 1024) * sizeof(char)) ; if (far data= = (char far*)NULL) { printf ("Whoopsie ! Far malloc failed ! \n") ; exit (1) ; } fstrcpy(far data, "This string is going to be stored in the far heap"); printf("Address of far_data : %Fp\n",&far_data) ; farfree (far_data) ; } 在這個例子中,遠程型字元指針被賦予了一個32位地址,該地址對應於遠程堆中一塊32KB的可用內存。注意,為了明確地從遠程堆中分配內存,必須使用一個far指針,因此上例的字元指針定義中加入了遠程型修飾符(far)。此外,你還要注意,從遠程堆中分配內存的一些函數(fareoreleft(),farmalloe(),farfree())和從近程堆中分配內存的函數是不同的。 遠程堆中的可用內存通常比近程堆中的多得多,因為近程堆被限制在64KB之內。如果你在你的計算機上編譯並運行前面的兩個例子,你會發現第一個例子(從近程堆中分配內存)大約有63KB的可用內存,而第二個例子(從遠程堆中分配內存)大約有400KB到600KB(依賴於你的計算機配置)的可用內存。因此,如果你的程序需要大量的內存來存儲數據,你就應該使用遠程堆而不是近程堆。 不管使用哪一種存儲模式(Tiny存儲模式除外),你都可以用near和far修飾符以及相應的近程型和遠程型函數來明確地從近程堆和遠程堆中分配內存。合理地使用近程型和遠程型數據,將有助於提高程序的運行效率,減少程序用盡內存的危險。 注意,因為DOS使用的是段地址結構定址機制,所以近程型和遠程型數據的概念是運行DOS的PC機所獨有的。其它操作系統,例如UNIX和Wndows NT,使用的是平面地址機制,沒有近程型或遠程型限制。

求採納

『陸』 C++ 在這里未定義的宏 near和far是什麼意思啊

這是古老年代的編譯器留下的痕跡。
那時有近調用與遠調用,近調用是64K區域內的調用,超出64K區域的地址就是遠了。每64K叫一個「段」,跨段就是遠。

現在 理解成空就可以了。
要找不到 near, far 加2句:
#define near
#define far
就可以了。

『柒』 C 語言 指針變數的定義問題

指針變數的定義

指針變數有三個屬性:

(1)該指針變數指向的變數的類型。如i_pointer指向的變數i是整型。

(2)該指針變數在內存中佔多少內存單元。如i_pointer占兩個內存單元,稱為「近指針」,用near表示。如果該變數在內存中佔4個內存單元,稱為「遠指針」,用far表示。如果未指定near或far,預設是near。(指針變數在內存中要麼佔2個內存單元,要麼佔4個內存單元)。

(3)該指針變數指向哪一個變數,即該指針變數的值是多少。如i_pointer的值是2000。

指針變數定義的一般形式:

類型標識符 * 標識符

「*」表示定義指針變數

「標識符」是指針變數名

「類型標識符」表示該指針變數所指向的變數類型。

例、

int i,j; /* 定義兩個整型變數 */

int *pointer_1, *pointer_2;

float *pointer_3;

char *pointer_4;

void *pointer_5;

char far *pointer_6;

指針變數的賦值:例、

pointer_1 = &i;

pointer_2 = &j;

注意,指針變數中只能存放地址,不能將一個非地址類型的數據(如常數等)賦給一個指針變數,如:

pointer_1 = 100;

也可以在定義指針變數的同時指定其初值,如、

int a;

int *p = &a;