Pointer in C Programming in Hindi – Complete Guide with Examples

आज आप पढ़ने वाले हैं Pointer in C Programming in Hindi में आसान Explanation Example Program के साथ। Pointer समझना कई लोगों को rocket science जैसा लगता है — लेकिन क्या आप जानते हैं कि जब आप कोई भी fast software, operating system, या game खेलते हैं, तो उसके पीछे pointers का ही जादू होता है? C programming सीखने वाले लगभग 70% students pointers पर आके रुक जाते हैं, और यही वह point होता है जहाँ beginners या तो आगे बढ़ जाते हैं या programming छोड़ने का सोच लेते हैं।

इस blog post में हम pointer को बिल्कुल शुरुआत से सीखेंगे। आपको किसी भी advanced knowledge की जरूरत नहीं है। हम सरल भाषा में, real life उदाहरणों के साथ और code examples की मदद से pointer को समझेंगे।

इस post को पढ़ने के बाद आप जानेंगे कि pointer क्या होता है, यह काम कैसे करता है, इसके अलग-अलग प्रकार कौन से हैं, और C programming में इसका उपयोग कहाँ-कहाँ होता है। तो चलिए शुरू करते हैं!

Pointer क्या होता है? (What is a pointer in C?)

Pointer एक ऐसा variable होता है जो किसी दूसरे variable का memory address store करता है। आसान भाषा में कहें तो — pointer खुद कोई value नहीं रखता, बल्कि यह बताता है कि वह value memory में कहाँ रखी हुई है।

Memory Address क्या होता है?

जब आप कोई variable declare करते हैं, तो computer उस variable के लिए memory में एक जगह बनाता है। उस जगह का एक unique number होता है, जिसे memory address कहते हैं।

उदाहरण के लिए:

int age = 25;

यहाँ age variable की value 25 है, लेकिन यह value memory में किसी एक address पर रखी गई है, जैसे कि 1002।

Pointer Declare कैसे करें?

Pointer declare करने का तरीका बहुत सरल है। Variable के type के आगे * (asterisk) लगाना होता है।

Syntax:

datatype *pointer_name;

उदाहरण:

int *ptr;

float *fptr;

char *cptr;

यहाँ ptr एक integer pointer है, जो किसी integer variable का address store कर सकता है।

Pointer का उपयोग — पहला Example

चलिए एक program से समझते हैं ताकि pointer in C programming का concept बिल्कुल साफ हो जाए:

Pointer Program in C:

#include <stdio.h>

int main() {
    int number = 50;      // A normal variable
    int *ptr;             // A pointer variable

    ptr = &number;        // Store the address of number in ptr

    printf("Value of number: %d\n", number);
    printf("Address of number: %p\n", &number);
    printf("Address stored in ptr: %p\n", ptr);
    printf("Value using ptr: %d\n", *ptr);

    return 0;
}
▶️ Output Result
Value of number: 50 Address of number: 0x7ff… Address stored in ptr: 0x7ff… Value using ptr: 50

Note : हर Computer में अलग अलग Memory Address हो सकता है।

Symbolमतलब
&numbernumber का memory address
ptraddress store करने वाला pointer
*ptrउस address पर जो value है
  • & operator को address-of operator कहते हैं।
  • * operator को dereference operator कहते हैं — यह pointer के through actual value तक पहुँचता है।
Pointer in c programming in hindi

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

C language में pointer कई प्रकार के होते हैं। आइए कुछ Common Pointer को समझते हैं। 

1. NULL Pointer

जब कोई Pointer किसी Variable को Point नहीं कर रहा हो, तो उसे NULL से Initialize करना चाहिए और ऐसे Pointer को NULL Pointer कहा जाता है। Pointer Declaration के बाद यदि उसे Initialize नहीं किया जाता, तो उसमें कोई Garbage Memory Address Store हो सकता है। ऐसे Pointer का उपयोग करने पर Program में Undefined Behavior देखने को मिल सकता है, जिससे Program गलत Output दे सकता है या Crash भी हो सकता है।

int *ptr = NULL;

if (ptr == NULL) {

printf(“Pointer किसी address को point नहीं कर रहा।\n”);

}

यह safe programming के लिए बहुत जरूरी है।

2. Void Pointer

Void pointer किसी भी data type का address store कर सकता है। इसे generic pointer भी कहते हैं।

Void Pointer Programme: 

#include <stdio.h>

int main() {
    void *ptr;          // Void pointer can store the address of any data type

    int num = 10;       // Integer variable
    float f = 3.14f;    // Float variable

    ptr = #         // Store the address of num in ptr
    printf("Integer: %d\n", *(int *)ptr);

    ptr = &f;           // Store the address of f in ptr
    printf("Float: %.2f\n", *(float *)ptr);

    return 0;
}
▶️ Output Result
Integer: 10 Float: 3.14

3. Wild Pointer

जब pointer को declare तो किया गया हो लेकिन कोई address assign न किया गया हो, तो उसे wild pointer कहते हैं। यह dangerous होता है क्योंकि यह किसी Garbage Memory Address को point कर सकता है।

int *ptr;  // यह wild pointer है — इसे avoid करें

हमेशा pointer को declare करते समय NULL assign करें या फिर वहीँ Initialize कर दें।

4. Double Pointer (Pointer to Pointer)

एक pointer जो दूसरे pointer का address store करे, उसे double pointer कहते हैं।

Double Pointer Program In C:

#include <stdio.h>

int main() {
    int num = 100;      // Integer variable
    int *ptr = #    // Pointer to num
    int **dptr = &ptr;  // Double pointer to ptr

    printf("Value of num: %d\n", **dptr);

    return 0;
}
▶️ Output Result
Value of num: 100

Pointer और Array का संबंध

C programming में array और pointer का बहुत गहरा रिश्ता है। Array का नाम खुद ही उसके पहले element का address होता है।

Pointer Array Program In C:

#include <stdio.h>

int main() {
    int marks[] = {85, 90, 78, 92, 88};
    int *ptr = marks;   // Address of the first element of the array

    printf("Array elements using pointer:\n");

    for (int i = 0; i < 5; i++) {
        printf("marks[%d] = %d\n", i, *(ptr + i));
    }

    return 0;
}
▶️ Output Result
Array elements using pointer: marks[0] = 85 marks[1] = 90 marks[2] = 78 marks[3] = 92 marks[4] = 88

यहाँ *(ptr + i) pointer arithmetic का उपयोग करके हर element तक पहुँचा जा रहा है।

Pointer और Function (Call by Reference)

Pointer की मदद से हम function में variable की actual value को बदल सकते हैं। इसे call by reference कहते हैं।

बिना Pointer के (Call by Value):

Call by Value Program in C:

#include <stdio.h>

void double_value(int n) {
    n = n * 2;   // This will not change the original variable
}

int main() {
    int num = 10;   // Original variable

    double_value(num);

    printf("Value of num: %d\n", num);

    return 0;
}
▶️ Output Result
Value of num: 10

Pointer के साथ (Call by Reference):

Call by Reference Program in C:

#include <stdio.h>
void double_value(int *ptr) {
    *ptr = *ptr * 2;   // Change the actual value using the pointer
}

int main() {
    int num = 10;

    printf("Before: %d\n", num);

    double_value(&num);

    printf("After: %d\n", num);

    return 0;
}
▶️ Output Result
Before: 10 After: 20

यह C programming में pointer का सबसे उपयोगी application है।

Two Numbers को Swap करना — Pointer Example

यह एक classic example है जो हर beginner को पता होना चाहिए:

Two Number Swap Program:

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;   // Store the value of a in a temporary variable
    *a = *b;         // Copy the value of b to a
    *b = temp;       // Copy the temporary value to b
}

int main() {
    int x = 5, y = 10;

    printf("Before swap: x = %d, y = %d\n", x, y);

    swap(&x, &y);

    printf("After swap: x = %d, y = %d\n", x, y);

    return 0;
}
▶️ Output Result
Before swap: x = 5, y = 10 After swap: x = 10, y = 5

Pointer और String

C में string एक character array होता है और pointer से string को आसानी से handle किया जा सकता है।

String Pointer Program:

#include <stdio.h>

int main() {
    char name[] = "Rahul";      // Character array (string)
    char *ptr = name;           // Pointer to the first character of the string

    printf("Name: ");

    while (*ptr != '\0') {      // Continue until the null character is reached
        printf("%c", *ptr);
        ptr++;                  // Move to the next character
    }

    printf("\n");

    return 0;
}
▶️ Output Result
Name: Rahul

Dynamic Memory Allocation और Pointer

Dynamic memory allocation में pointer बहुत जरूरी होता है। malloc(), calloc(), realloc() और free() functions pointer के साथ काम करते हैं।

Dynamic Memory Allocation Program:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int size = 5;   // Number of elements required

    // Allocate memory for 5 integers
    int *numbers = (int *)malloc(size * sizeof(int));

    // Check if memory allocation was successful
    if (numbers == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }

    // Store values in the dynamically allocated array
    numbers[0] = 10;
    numbers[1] = 20;
    numbers[2] = 30;
    numbers[3] = 40;
    numbers[4] = 50;

    // Display array elements
    printf("Dynamic Array Elements:\n");

    for (int i = 0; i < size; i++) {
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }

    // Free the allocated memory
    free(numbers);

    return 0;
}
▶️ Output Result
Dynamic Array Elements: numbers[0] = 10 numbers[1] = 20 numbers[2] = 30 numbers[3] = 40 numbers[4] = 50

Pointer Use करते समय सावधानियाँ

Pointer बहुत powerful होता है, इसलिए इसे सही तरीके से इस्तेमाल करना जरूरी है।

  • हमेशा pointer को initialize करें — declare करते समय NULL assign करें या वहीँ पे Initialize करें। 
  • memory leak से बचेंmalloc के बाद free() जरूर करें
  • wild pointer से बचें — बिना address के pointer use न करें
  • array की boundary check करें — array से बाहर जाने पर undefined behavior होता है
  • NULL check करेंpointer use करने से पहले check करें कि वह NULL तो नहीं है

Conclusion ( निष्कर्ष )

Pointer in C programming में एक बहुत जरूरी कदम है, और आज अपने समझा Pointer in C programming in Hindi में।  अगर आप एक अच्छे programmer बनना चाहते हैं। इस post में हमने pointer की पूरी जानकारी सरल भाषा में समझी — pointer क्या है, इसे कैसे declare करें, इसके प्रकार कौन से हैं, array और function के साथ इसका उपयोग कैसे होता है, और dynamic memory allocation में इसकी क्या भूमिका है। हर concept को real code examples के साथ समझाया गया ताकि आपको पूरी clarity मिले।

अब  इस post में दिए गए सभी code examples को अपने computer पर run करके देखें। खुद से छोटे-छोटे programs लिखें और pointer को practice करें। अगर कोई सवाल हो या कोई concept समझ न आए, तो नीचे comment जरूर करें। इस post को अपने दोस्तों के साथ भी share करें जो C programming सीख रहे हैं ताकि उन्हें भी इसका फायदा हो।

Frequently Asked Questions

Q 1: Pointer in C क्या है?
Ans: Pointer एक special variable है जो किसी दूसरे variable का memory address store करता है। यह * symbol से declare होता है और & operator से किसी variable का address लिया जाता है।
Q 2: * और & में क्या फर्क है?
Ans: & (address-of operator) किसी variable का memory address देता है। * (dereference operator) pointer के through उस address पर stored value तक पहुँचता है। दोनों एक-दूसरे के opposite काम करते हैं।
Q 3: NULL Pointer क्यों जरूरी है?
Ans: NULL pointer यह दर्शाता है कि pointer अभी किसी valid memory location को point नहीं कर रहा। यह program को crash होने से बचाता है। हमेशा pointer check करें कि वह NULL तो नहीं, इससे पहले कि आप उसे use करें।
Q 4: Pointer और Array में क्या संबंध है?
Ans: Array का नाम उसके पहले element का address होता है। इसलिए array को pointer की तरह use किया जा सकता है। arr[i] और *(arr + i) दोनों same result देते हैं।
Q 5: Double Pointer क्या होता है?
Ans: Double pointer (**) एक pointer होता है जो दूसरे pointer का address store करता है। इसका उपयोग 2D arrays, linked lists, और dynamic memory management में होता है।

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top