Wednesday, November 5, 2025

ponter in hindi

 

पॉइंटर (Pointer)

परिभाषा (Definition):

Pointer एक ऐसा वेरिएबल (variable) है जो किसी दूसरे वेरिएबल का मेमोरी एड्रेस (memory address) स्टोर करता है। सामान्य वेरिएबल मान (value) को स्टोर करता है, जबकि pointer किसी मान का पता (address) स्टोर करता है।

उदाहरण:

int a = 10; int *p; // pointer की घोषणा (declaration) p = &a; // pointer का आरंभिककरण (initialization)

यहाँ,

  • a → सामान्य वेरिएबल

  • p → पॉइंटर वेरिएबल

  • &a → वेरिएबल a का एड्रेस
    इसलिए, p में a का मेमोरी एड्रेस स्टोर होता है।


Pointer में प्रयोग होने वाले प्रतीक (Symbols Used in Pointer)

SymbolMeaning
&Address-of ऑपरेटर (किसी वेरिएबल का एड्रेस प्राप्त करने के लिए)
*Value-at ऑपरेटर (किसी एड्रेस पर स्थित मान प्राप्त करने या बदलने के लिए)

उदाहरण:

printf("%d", *p); // a के एड्रेस पर स्थित मान (10) प्रिंट करता है

📘 Pointer की घोषणा और आरंभिककरण (Declaration and Initialization)

Declaration:

Pointer घोषित करने के लिए वेरिएबल के नाम से पहले * लगाया जाता है।

सिंटैक्स:

data_type *pointer_name;

उदाहरण:

int *p; float *q; char *r;

Initialization:

Pointer को किसी वेरिएबल के एड्रेस से प्रारंभ (initialize) किया जाता है।

उदाहरण:

int a = 5; int *p; p = &a;

Program

#include <stdio.h> int main() { int a = 10; int *p; p = &a; printf("Value of a = %d\n", a); printf("Address of a = %p\n", &a); printf("Value stored in pointer p = %p\n", p); printf("Value pointed by p = %d\n", *p); return 0; }

आउटपुट (Output):

Value of a = 10 Address of a = (some memory address) Value stored in pointer p = (same address) Value pointed by p = 10

C में Pointer के फायदे (Advantages of Pointers in C)

  1. मेमोरी तक सीधा पहुँचने की सुविधा देता है, जिससे प्रोग्राम तेज़ चलता है।

  2. ऐरे (Array) के एलिमेंट्स को आसानी से एक्सेस और बदल सकते हैं।

  3. फंक्शन में वेरिएबल के एड्रेस पास करके Call by Reference संभव है।

  4. लिंक्ड लिस्ट, स्टैक, क्यू, ट्री जैसी डायनामिक डाटा स्ट्रक्चर बनाने में जरूरी है।

  5. डेटा कॉपी करने की आवश्यकता कम होती है — समय और मेमोरी दोनों बचते हैं।

  6. स्ट्रिंग्स (Strings) को प्रभावी रूप से हैंडल करने में सहायक है।

  7. Function Pointer के माध्यम से फंक्शन को डायनामिक रूप से कॉल किया जा सकता है।


C में Pointer के नुकसान (Disadvantages of Pointers in C)

  1. शुरुआती विद्यार्थियों के लिए समझना कठिन होता है।

  2. जब Pointer उस मेमोरी को दर्शाता है जो पहले ही मुक्त (free) हो चुकी है, तो प्रोग्राम क्रैश हो सकता है।

  3. बिना आरंभिककरण (initialization) के उपयोग करने पर अनपेक्षित परिणाम (undefined behavior) मिलता है।

  4. गलत Pointer उपयोग से मेमोरी खराब हो सकती है या डेटा नष्ट हो सकता है।

  5. Pointer से संबंधित त्रुटियाँ (errors) ढूंढना और सुधारना कठिन होता है।

  6. अवैध (invalid) या NULL pointer को एक्सेस करने से प्रोग्राम क्रैश हो सकता है।


C में Pointer के प्रकार (Types of Pointers in C)

1️⃣ Null Pointer

ऐसा pointer जो किसी भी वैध मेमोरी स्थान को नहीं दर्शाता।
इसे सामान्यतः NULL से आरंभ किया जाता है ताकि यह खाली (empty) या अप्रयुक्त (unused) दर्शाए।

उदाहरण:

int *p = NULL;

यहाँ p किसी भी वेरिएबल के एड्रेस को नहीं दर्शा रहा है।


2️⃣ Void Pointer (Generic Pointer)

ऐसा pointer जो किसी भी डेटा टाइप (int, float, char, आदि) का एड्रेस रख सकता है।
इसे उपयोग करने से पहले उचित प्रकार में Typecast करना आवश्यक है।

उदाहरण:

void *ptr; int a = 5; ptr = &a; printf("%d", *(int *)ptr);

यहाँ ptr एक void pointer है जो a का एड्रेस रखता है।


3️⃣ Wild Pointer

ऐसा pointer जिसे घोषित तो किया गया है, लेकिन आरंभिककृत (initialized) नहीं किया गया।
यह अनजानी मेमोरी लोकेशन को दर्शाता है और प्रोग्राम को क्रैश कर सकता है।

उदाहरण:

int *p; // Wild pointer *p = 10; // अनिर्धारित व्यवहार (undefined behavior)

4️⃣ Array Pointer

ऐसा pointer जो किसी array के पहले तत्व (first element) के एड्रेस को दर्शाता है।
Array का नाम स्वयं एक pointer की तरह कार्य करता है।

उदाहरण:

int arr[5] = {10, 20, 30, 40, 50}; int *p = arr; printf("%d", *p); // 10 printf("%d", *(p+2)); // 30

5️⃣ Function Pointer

ऐसा pointer जो किसी फंक्शन के एड्रेस को स्टोर करता है।
इसके द्वारा फंक्शन को अप्रत्यक्ष रूप से (indirectly) कॉल किया जा सकता है।

उदाहरण:

#include <stdio.h> void show() { printf("Hello World"); } int main() { void (*p)() = show; p(); // show() फंक्शन को कॉल करता है return 0; }

6️⃣ Pointer to Structure

ऐसा pointer जो किसी structure वेरिएबल का एड्रेस स्टोर करता है।
इसके द्वारा स्ट्रक्चर के मेंबर्स को -> ऑपरेटर से एक्सेस किया जाता है।

उदाहरण:

#include <stdio.h> struct student { int age; char name[20]; }; int main() { struct student s1 = {15, "Ravi"}; struct student *p = &s1; printf("Name: %s, Age: %d", p->name, p->age); return 0; }

7️⃣ Pointer to Pointer (Double Pointer)

यह pointer किसी दूसरे pointer का एड्रेस रखता है।
इसका उपयोग कई स्तरों की रेफरेंसिंग (multiple referencing) के लिए होता है।

उदाहरण:

int a = 10; int *p = &a; int **q = &p; printf("%d", **q); // 10

8️⃣ Constant Pointer

ऐसा pointer जिसका address नहीं बदला जा सकता, परंतु उस एड्रेस पर रखे मान को बदला जा सकता है।

उदाहरण:

int a = 10, b = 20; int *const p = &a; *p = 15; // मान बदला जा सकता है p = &b; // ❌ एड्रेस बदला नहीं जा सकता

No comments:

Post a Comment

ponter in hindi

  पॉइंटर (Pointer) परिभाषा (Definition): Pointer एक ऐसा वेरिएबल (variable) है जो किसी दूसरे वेरिएबल का मेमोरी एड्रेस (memory address) स...