根据内存模型和段,指针分为三种类型:
近指针
远指针
巨大的指针
它是一个在64Kb内存数据段范围内工作的指针。
它无法访问该数据段之外的地址。
可以使用算术运算符来增加或减少地址范围的近指针。
使用关键字Near,我们可以将任何指针设为Near指针。
语法如下-
<data type> near <pointer definition> <data type> near <function definition>
以下语句为变量s声明了Near指针
char near *string;
以下程序显示了近指针的用法。
#include<stdio.h> int main(){ int number=50; int near* p; p=&number; printf(“%d”,sizeof(p)); return 0; }输出结果
输出如下-
2
它是一个指针,既存储偏移量,又存储与该指针不同的段地址。
它可以访问所有16个段。
远指针地址的范围是0到1MB。
当指针递增或递减时,仅偏移部分正在更改。
语法如下-
<data type> far <pointer definition> <data type> far <function definition>
以下语句为变量s声明了一个远指针
char far *s;
以下程序显示了远指针的用法。
#include<stdio.h> Int main(){ int number=50; int far *p; p=&number; printf(“%d”,sizeof number); return 0; }输出结果
输出如下-
4
它是一个指针,在大小上类似于far指针,因为它们都是32位地址。
可以增加巨大的指针,而不会遇到段工作循环的麻烦。
以下程序显示了巨大指针的用法。
#include<stdio.h> Int main(){ Char huge *far *ptr; Printf(“%d%d%d”,sizeof(ptr),sizeof(*ptr),sizeof(**ptr)); Return 0; }输出结果
输出如下-
4 4 1