C प्रोग्रामिंग भाषा में, पॉइंटर टू पॉइंटर या डबल पॉइंटर एक वेरिएबल है जो दूसरे पॉइंटर का पता रखता है।
घोषणा
नीचे पॉइंटर से पॉइंटर के लिए डिक्लेरेशन दिया गया है -
datatype ** pointer_name;
उदाहरण के लिए, int **p;
यहाँ, p, सूचक का सूचक है।
आरंभीकरण
इनिशियलाइज़ेशन के लिए '&' का इस्तेमाल किया जाता है।
उदाहरण के लिए,
int a = 10; int *p; int **q; p = &a;
एक्सेस करना
इनडायरेक्शन ऑपरेटर (*) का उपयोग एक्सेस करने के लिए किया जाता है
नमूना कार्यक्रम
डबल पॉइंटर के लिए सी प्रोग्राम निम्नलिखित है -
#include<stdio.h> main ( ){ int a = 10; int *p; int **q; p = &a; q = &p; printf("a =%d ",a); printf(" a value through pointer = %d", *p); printf(" a value through pointer to pointer = %d", **q); }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
a=10 a value through pointer = 10 a value through pointer to pointer = 10
उदाहरण
अब, एक अन्य C प्रोग्राम पर विचार करें जो पॉइंटर से पॉइंटर के बीच संबंध को दर्शाता है।
#include<stdio.h> void main(){ //Declaring variables and pointers// int a=10; int *p; p=&a; int **q; q=&p; //Printing required O/p// printf("Value of a is %d\n",a);//10// printf("Address location of a is %d\n",p);//address of a// printf("Value of p which is address location of a is %d\n",*p);//10// printf("Address location of p is %d\n",q);//address of p// printf("Value at address location q(which is address location of p) is %d\n",*q);//address of a// printf("Value at address location p(which is address location of a) is %d\n",**q);//10// }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Value of a is 10 Address location of a is 6422036 Value of p which is address location of a is 10 Address location of p is 6422024 Value at address location q(which is address location of p) is 6422036 Value at address location p(which is address location of a) is 10. है