Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में पॉइंटर टू पॉइंटर (डबल पॉइंटर) का संबंध


पॉइंटर टू पॉइंटर क्या है?

पॉइंटर टू पॉइंटर (Pointer to Pointer) या डबल पॉइंटर (Double Pointer) एक ऐसा चर होता है जो दूसरे पॉइंटर का पता संग्रहीत करता है। इसे ** से दर्शाया जाता है।

घोषणा और प्रारंभिकरण

// घोषणा
डेटा_प्रकार **पॉइंटर_नाम;

// उदाहरण
int **ptr;

// प्रारंभिकरण
int a = 10;
int *p = &a;      // p, a का पता रखता है
int **q = &p;     // q, p का पता रखता है (डबल पॉइंटर)

मेमोरी प्रतिनिधित्व

चर a (मान 10)  →  पता: 1000
पॉइंटर p        →  पता: 2000, मान: 1000 (a का पता)
डबल पॉइंटर q   →  पता: 3000, मान: 2000 (p का पता)

एक्सेस करना

  • *p → a का मान (10)
  • **q → a का मान (10)
  • *q → p का मान (1000, जो a का पता है)

उदाहरण प्रोग्राम 1: बुनियादी प्रदर्शन

#include <stdio.h>

int main() {
    int a = 10;
    int *p;
    int **q;
    
    p = &a;
    q = &p;
    
    printf("a = %d\n", a);
    printf("a का मान पॉइंटर से: %d\n", *p);
    printf("a का मान डबल पॉइंटर से: %d\n", **q);
    
    return 0;
}

आउटपुट

a = 10
a का मान पॉइंटर से: 10
a का मान डबल पॉइंटर से: 10

उदाहरण प्रोग्राम 2: विस्तृत संबंध विश्लेषण

#include <stdio.h>

int main() {
    int a = 10;
    int *p = &a;
    int **q = &p;
    
    printf("a का मान: %d\n", a);                    // 10
    printf("a का पता (p): %p\n", (void*)p);        // a का पता
    printf("*p (a का मान): %d\n", *p);              // 10
    printf("p का पता (q): %p\n", (void*)q);        // p का पता
    printf("*q (p का मान = a का पता): %p\n", (void*)*q);  // a का पता
    printf("**q (a का मान): %d\n", **q);            // 10
    
    return 0;
}

व्यावहारिक उपयोग

  • फंक्शन में पॉइंटर को संशोधित करना: फंक्शन को पॉइंटर का पता पास करके मूल पॉइंटर बदलना।
  • डायनामिक 2D सरणी: पॉइंटर्स की सरणी आवंटित करना।
  • कमांड लाइन आर्गुमेंट्स: char **argv।
  • लिंक्ड लिस्ट/ट्री में नोड संशोधन: हेड पॉइंटर अपडेट करना।

उदाहरण: फंक्शन में पॉइंटर बदलना

void allocate(int **ptr, int size) {
    *ptr = malloc(size * sizeof(int));  // मूल पॉइंटर बदलता है
}

int main() {
    int *arr = NULL;
    allocate(&arr, 10);  // डबल पॉइंटर पास किया
    // अब arr 10 इंटीजर्स की ओर इशारा करता है
    free(arr);
    return 0;
}
  1. HTML DOM Address ऑब्जेक्ट HTML DOM Address ऑब्जेक्ट

    <address> एलिमेंट को दर्शाने के लिए address ऑब्जेक्ट का उपयोग करें। आइए <address> बनाने का एक उदाहरण देखें −उदाहरण<!DOCTYPE html> <html> <body> <h2>हेडिंग दो</h2> <p>address एलिमेंट बनाएं</p> <button onclick="display()">प्रद

  1. फॉर लूप का उपयोग करके 1 से N तक की सभी अभाज्य संख्याएं प्रदर्शित करने का C प्रोग्राम फॉर लूप का उपयोग करके 1 से N तक की सभी अभाज्य संख्याएं प्रदर्शित करने का C प्रोग्राम

    समस्या एक C प्रोग्राम लिखें जो 1 और n के बीच की सभी अभाज्य संख्याओं को प्रदर्शित करे, जहां n उपयोगकर्ता द्वारा रनटाइम पर दिया गया मान है। समाधान उपयोगकर्ता द्वारा रनटाइम पर दिए गए मान n के बीच 1 और n की सभी अभाज्य संख्याओं को प्रदर्शित करने के लिए C प्रोग्राम नीचे समझाया गया है। एल्गोरिथम उपयोगकर्

  1. C प्रोग्राम में 3D में दो तल के बीच का कोण C प्रोग्राम में 3D में दो तल के बीच का कोण

    समस्या विवरण यहां हम त्रि-आयामी स्थान में दो तल के बीच का कोण गणना करना देखेंगे। तल P1 और P2 हैं। Pi के समीकरण इस प्रकार हैं: a₁x + b₁y + c₁z + d₁ = 0 a₂x + b₂y + c₂z + d₂ = 0 सूत्र यदि कोण A है, तो: cos A = |a₁a₂ + b₁b₂ + c₁c₂| / (√(a₁²+b₁²+c₁²) * √(a₂²+b₂²+c₂²)) C++ प्रोग्राम उदाहरण d = d;