पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल के एड्रेस को स्टोर करता है।
सुविधाएं
- सूचक स्मृति स्थान बचाता है।
- मेमोरी लोकेशन तक सीधी पहुंच के कारण पॉइंटर का निष्पादन समय तेज होता है।
- पॉइंटर्स की मदद से, मेमोरी को कुशलता से एक्सेस किया जाता है, यानी मेमोरी को गतिशील रूप से आवंटित और डील किया जाता है।
- पॉइंटर्स का उपयोग डेटा संरचनाओं के साथ किया जाता है।
सूचक घोषणा और प्रारंभ
निम्नलिखित कथन पर विचार करें -
int qty = 179;
मेमोरी में, वेरिएबल को इस प्रकार दर्शाया जा सकता है -
सूचक घोषित करना
इसका अर्थ है कि 'p' एक सूचक चर है, जो एक अन्य पूर्णांक चर का पता रखता है, जैसा कि नीचे दिखाया गया है -
Int *p;
सूचक का प्रारंभ
एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को इनिशियलाइज़ करने के लिए किया जाता है।
उदाहरण के लिए - int qty =175;
इंट *पी;
पी=&मात्रा;
पॉइंटर्स की सरणी
यह पतों का संग्रह है (या) पॉइंटर्स का संग्रह
घोषणा
पॉइंटर्स की सरणी के लिए घोषणा निम्नलिखित है -
datatype *pointername [size];
उदाहरण के लिए,
int *p[5];
यह पॉइंटर्स की एक सरणी का प्रतिनिधित्व करता है जिसमें 5 पूर्णांक तत्व पते हो सकते हैं।
आरंभीकरण
'&' का प्रयोग आरंभीकरण के लिए किया जाता है।
उदाहरण के लिए,
int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i;
एक्सेस करना
इनडायरेक्शन ऑपरेटर (*) का उपयोग एक्सेस करने के लिए किया जाता है।
उदाहरण के लिए,
for (i=0, i<3; i++) printf ("%d", *p[i]);
उदाहरण कार्यक्रम
पॉइंटर्स की सरणी के लिए प्रोग्राम नीचे दिया गया है -
#include<stdio.h> main ( ){ int a[3] = {10,20,30}; int *p[3],i; for (i=0; i<3; i++) p[i] = &a[i]; printf ("elements of the array are \n"); for (i=0; i<3; i++) printf ("%d \t", *p[i]); }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
elements at the array are : 10 20 30
उदाहरण 2
नीचे दिए गए पॉइंटर्स टू स्ट्रिंग्स के लिए प्रोग्राम है -
#include <stdio.h> #include <stdlib.h> int main(void){ char *a[5] = {"one", "two", "three", "four", "five"}; int i; printf ( "the strings are at locations:\n"); for (i=0; i<5; i++) printf ("%d\n", a[i]); return 0; }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
The strings are at locations: 4210688 4210692 4210696 4210702 4210707