मेमोरी मॉडल और सेगमेंट के आधार पर, पॉइंटर्स को तीन प्रकारों में वर्गीकृत किया जाता है -
- पॉइंटर के पास
- दूर सूचक
- विशाल सूचक
पॉइंटर के पास
-
यह एक पॉइंटर है जो मेमोरी के 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