当前位置:首页 » 编程语言 » 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;