डबल पॉइंटर या पॉइंटर टू पॉइंटर एक वेरिएबल है जो दूसरे पॉइंटर का पता रखता है।
एक सूचक के लिए एक सूचक के लिए घोषणा निम्नलिखित है -
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 of pointer = %d", *p); printf("A value of double pointer = %d", **q); }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
A=10 A value of pointer = 10 A value of double pointer = 10
शून्य संकेत
यह एक प्रकार का पॉइंटर है जो किसी भी डेटाटाइप वेरिएबल के एड्रेस को होल्ड कर सकता है (या) किसी भी डेटाटाइप वेरिएबल को इंगित कर सकता है।
शून्य सूचक के लिए घोषणा निम्नलिखित है -
void *pointername;
उदाहरण के लिए, शून्य *vp;
एक्सेस करना - टाइप कास्ट ऑपरेटर एक वेरिएबल के मान को उसके पॉइंटर के माध्यम से एक्सेस करने के लिए है।
वाक्य रचना इस प्रकार है -
* ( (type cast) void pointer)
उदाहरण के लिए,
int i=10; void *vp; vp = &i; printf ("%d", * ((int*) vp)); type cast
उदाहरण
शून्य सूचक के लिए सी कार्यक्रम निम्नलिखित है -
#include<stdio.h> main ( ){ int i =10; float f = 5.34; void *vp; clrscr ( ); vp = &i; printf ("i = %d", * ((int*)vp)); vp = &f; printf ( "f = %f", * ((float*) vp)); getch ( ); }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
i = 10 f = 5.34