https://www.rakeshmgs.in/search/label/Template
https://www.rakeshmgs.in

Learn in Hindi

RakeshMgs

Pointer to a Pointer (Double Pointer) in C Programming in Hindi

शनिवार, मार्च 20, 2021

Pointer to a Pointer(Double Pointer)

पॉइंटर्स का उपयोग समान डेटा प्रकार के अन्य variable के address को संग्रहीत करने के लिए किया जाता है। लेकिन अगर आप पॉइंटर वैरिएबल के एड्रेस को स्टोर करना चाहते हैं, तो आपको इसे स्टोर करने के लिए फिर से पॉइंटर की जरूरत होगी। इस प्रकार, जब एक पॉइंटर वैरिएबल दूसरे पॉइंटर वैरिएबल के address को स्टोर करता है, तो इसे पॉइंटर टू पॉइंटर वेरिएबल या डबल पॉइंटर के रूप में जाना जाता है।

Syntax:

	
	
int **p1;

यहां हमने दो indirection operator(*) का उपयोग किया है जो एक पॉइंटर variable के address पर स्टोर करता है और इंगित करता है, अर्थात, nt *। अगर हम इस (double pointer) वेरिएबल p1 के address को स्टोर करना चाहते हैं

Simple program to represent Pointer to a Pointer

	
	
#include<stdio.h> void main() { int a = 10; int *p1; //this can store the address of variable a int **p2; /* this can store the address of pointer variable p1 only. It cannot store the address of variable 'a' */ p1 = &a; p2 = &p1; printf("Address of a = %u\n", &a); printf("Address of p1 = %u\n", &p1); printf("Address of p2 = %u\n\n", &p2); // below print statement will give the address of 'a' printf("Value at the address stored by p2 = %u\n", *p2); printf("Value at the address stored by p1 = %d\n\n", *p1); printf("Value of **p2 = %d\n", **p2); //read this *(*p2) /* This is not allowed, it will give a compile time error- p2 = &a; printf("%u", p2); */ return 0;

output

Address of a = 2686724
Address of p1 = 2686728
Address of p2 = 2686732
Value at the address stored by p2 = 2686724
Value at the address stored by p1 = 10
Value of **p2 = 10

Explanation of the above program



1. p1 पॉइंटर वैरिएबल केवल वैरिएबल a (यानी अप्रत्यक्ष ऑपरेटर की संख्या (*)-1 वैरिएबल) के address को hold सकता है। इसी तरह, P2 वैरिएबल केवल वेरिएबल p1 का address hold सकता है। यह variable का address नहीं hold सकता है।
2. *p 2 हमें p2 पॉइंटर द्वारा संग्रहीत address पर value देता है। p2 p1 सूचक के address को संग्रहीत करता है और p1 के address पर variable a का address है। इस प्रकार, *P2 का address print करता है।
3. **P2 को *(*P2) के रूप में पढ़ा जा सकता है। इसलिए, यह हमें पता *P2 पर store value देता है। उपरोक्त कथन से, आप जानते हैं *P2 का अर्थ है variable का address। इसलिए, address *p2 पर मान 10 है। इस प्रकार, ** p2 10 प्रिंट करता है।