ขึ้นอยู่กับรุ่นหน่วยความจำและเซ็กเมนต์ ตัวชี้แบ่งออกเป็นสามประเภท -
- ตัวชี้ใกล้
- ตัวชี้ไกล
- ตัวชี้ขนาดใหญ่
ตัวชี้ใกล้
-
เป็นพอยน์เตอร์ที่ใช้งานได้ในช่วงหน่วยความจำ 64Kb
-
ไม่สามารถเข้าถึงที่อยู่นอกเหนือจากส่วนข้อมูลนั้นได้
-
ตัวชี้ใกล้สามารถเพิ่มหรือลดช่วงที่อยู่ได้โดยใช้ตัวดำเนินการเลขคณิต
-
ด้วยคำสำคัญใกล้ เราสามารถทำให้ตัวชี้ใด ๆ เป็นตัวชี้ใกล้ได้
ไวยากรณ์
ไวยากรณ์มีดังนี้ −
<data type> near <pointer definition> <data type> near <function definition>
คำสั่งต่อไปนี้ประกาศตัวชี้ใกล้สำหรับตัวแปร s
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
ตัวชี้ขนาดใหญ่
-
มันคือพอยน์เตอร์ที่คล้ายกับตัวชี้ไกลในแง่ของขนาดเพราะทั้งคู่เป็นแอดเดรส 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