1. Pointers in C क्या हैं? – Pointers in C in Hindi
C Language में Pointer एक ऐसा variable होता है जो किसी दूसरे variable के memory address को store करता है।
साधारण शब्दों में कहें तो — pointer data value को नहीं बल्कि उस value के address को रखता है।
हर variable का computer memory में एक unique address होता है। Pointer उसी address को reference करता है ताकि हम memory के अंदर stored value को indirectly access या modify कर सकें।
उदाहरण के लिए:
int a = 10;
int *p = &a;
यहाँ a एक normal variable है और p एक pointer variable है जो a का address store करता है।&a का मतलब है “a का address” और *p का मतलब है “उस address पर stored value।”
2. Pointer को Declare कैसे करते हैं?
C Language में Pointer declare करने के लिए हम * (asterisk) symbol का उपयोग करते हैं।
Pointer को declare करते समय यह बताना जरूरी होता है कि वह किस type के variable का address store करेगा —
यानि उसका data type।
Pointer Declaration का Syntax:
data_type *pointer_name;
यहाँ
data_typeबताता है कि pointer किस type के variable को point करेगा (जैसेint,float,charआदि)।*symbol बताता है कि यह एक pointer variable है।pointer_namepointer का नाम होता है।
उदाहरण:
int *p; // integer type pointer
float *f; // float type pointer
char *c; // character type pointer
ऊपर दिए गए code में:
pएक pointer है जो integer variable का address store करेगा।fएक pointer है जो float variable का address store करेगा।cएक pointer है जो char variable का address store करेगा।
ध्यान देने योग्य बात:
C में pointer declare करते समय * को variable name के साथ या data type के साथ लिखा जा सकता है —
दोनों का meaning एक ही होता है:
int* p; // valid
int *p; // valid
int * p; // valid
इन तीनों तरीकों में कोई फर्क नहीं है। ये सब एक integer pointer को declare करते हैं।
3. Pointer को Initialize कैसे करते हैं?
Pointer को declare करने के बाद उसे initialize करना यानी किसी variable के address से जोड़ना जरूरी होता है।
अगर pointer को initialize नहीं किया जाता, तो उसमें garbage value (यानि कोई random address) stored रहती है,
जिससे program crash या undefined behavior हो सकता है।
Pointer Initialization का Syntax:
data_type *pointer_name = &variable_name;
यहाँ
&(address-of operator) variable का memory address देता है।- यह address pointer में store किया जाता है।
उदाहरण:
int a = 10;
int *p = &a;
यहाँ,
aएक normal integer variable है जिसमें value10stored है।pएक pointer variable है जोaके address को store कर रहा है।
अब p में a का memory address है — और *p से हम उस address की value को access कर सकते हैं।
Initialization के बाद Output Example:
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
printf("a की value: %d\n", a);
printf("a का address: %p\n", &a);
printf("pointer p में stored address: %p\n", p);
printf("pointer p से access की गई value: %d\n", *p);
return 0;
}
Output:
a की value: 10
a का address: 0x7ffd2b3c4d2c
pointer p में stored address: 0x7ffd2b3c4d2c
pointer p से access की गई value: 10
यहाँ clearly दिखता है कि
pमेंaका address है- और
*pसे हम उसी address की value (10) को access कर सकते हैं।
4. Pointer Variable को Access कैसे करते हैं?
जब हम किसी pointer variable को access करते हैं, तो हमें दो चीज़ों को समझना जरूरी होता है —
- Pointer का value (address)
- उस address पर stored असली data (dereferenced value)
यानि pointer दो तरह की जानकारी रखता है:
- Memory में किस जगह (address) पर data रखा है
- उस जगह पर actual data क्या है
1. Pointer का Address Access करना (& या pointer का नाम)
Pointer variable के अंदर जो value होती है, वो किसी दूसरे variable का memory address होता है।
हम pointer variable को सीधे print करके वो address देख सकते हैं।
int a = 20;
int *p = &a;
printf("p में जो address store है: %p\n", p);
Output:
p में जो address store है: 0x7ffd8c9a4b2c
यह address असल में variable a की memory location को represent करता है।
2. Pointer के ज़रिए Value Access करना (* Dereference Operator)
Pointer के अंदर stored address पर जो value रखी है, उसे access करने के लिए * (dereference operator) का उपयोग किया जाता है।
int a = 20;
int *p = &a;
printf("Pointer से access की गई value: %d\n", *p);
Output:
Pointer से access की गई value: 20
यहाँ *p का मतलब है — “उस address पर जाओ जो p में stored है और वहां की value निकालो।”
एक Example जो दोनों को साथ दिखाए:
#include <stdio.h>
int main() {
int num = 50;
int *ptr = #
printf("num की value: %d\n", num);
printf("num का address: %p\n", &num);
printf("ptr में stored address: %p\n", ptr);
printf("ptr से access की गई value: %d\n", *ptr);
return 0;
}
Output:
num की value: 50
num का address: 0x7ffc1b7a4c90
ptr में stored address: 0x7ffc1b7a4c90
ptr से access की गई value: 50
इस तरह हम pointer का इस्तेमाल करके किसी variable के data को indirectly access या modify कर सकते हैं।
5. Pointer और Address of Operator (&)
C Language में Address of Operator (&) का इस्तेमाल किसी variable का memory address प्राप्त करने के लिए किया जाता है।
हर variable computer की memory में किसी specific location पर store होता है, और & operator उसी location का address देता है।
उदाहरण समझिए:
int a = 10;
printf("%p", &a);
Output:
0x7ffeefbff4ac
ऊपर के code में &a से हमें variable a का memory address मिला है।
यानी “a कहाँ store है” यह बताने का काम & operator करता है।
Pointer में Address Store करना:
अब अगर हम इसी address को किसी pointer variable में store करना चाहें, तो हमें & operator का इस्तेमाल करना होगा।
int a = 10;
int *p = &a;
यहाँ,
aएक normal variable है।&aसे हमेंaका address मिला।- और
pएक pointer variable है जोaका address store कर रहा है।
Output Program Example:
#include <stdio.h>
int main() {
int num = 25;
int *ptr = #
printf("num की value: %d\n", num);
printf("num का address (&num): %p\n", &num);
printf("ptr में store किया गया address: %p\n", ptr);
return 0;
}
Output:
num की value: 25
num का address (&num): 0x7ffca1234b60
ptr में store किया गया address: 0x7ffca1234b60
यहाँ clearly दिख रहा है कि ptr में वही address store है जो &num से मिला था।
निष्कर्ष:
& operator किसी variable का address बताता है,
और pointer variable उस address को store करता है —
ताकि हम उस variable की value को indirectly access या modify कर सकें।
6. Pointer और Dereference Operator (*)
C Language में Dereference Operator (*) का इस्तेमाल किसी pointer के stored address से actual value निकालने के लिए किया जाता है।
यानि pointer जिस variable की ओर point कर रहा है, उसकी value को access करने के लिए हम * का उपयोग करते हैं।
Syntax:
*pointer_name
इसका मतलब है —
“उस memory address पर जाओ, जिसे यह pointer hold कर रहा है, और वहाँ की value दिखाओ।”
Example:
#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // p में a का address store हुआ
printf("a की value: %d\n", a);
printf("Pointer p में store address: %p\n", p);
printf("Dereference (*p) से value: %d\n", *p);
return 0;
}
Output:
a की value: 10
Pointer p में store address: 0x61ff08
Dereference (*p) से value: 10
Explanation:
aएक normal variable है जिसकी value है 10pएक pointer है जोaका address रखता है (p = &a)*pका मतलब है → “उस address पर जाओ जो p में है”
यानी a की value (10) को access करना
Important Point:
अगर आप किसी pointer को initialize किए बिना dereference करते हैं (यानि random address से value access करते हैं),
तो आपका program crash हो सकता है या undefined behavior देगा।
इसलिए हमेशा pointer को dereference करने से पहले उसे valid address से initialize करें।
7. Example: Pointer का Basic प्रोग्राम
अब तक हमने जाना कि Pointer क्या होता है, उसे declare, initialize और dereference कैसे करते हैं।
अब एक complete practical example देखते हैं जिससे ये सब concept clear हो जाएगा।
Program:
#include <stdio.h>
int main() {
int num = 25; // normal variable
int *ptr; // pointer variable declare किया
ptr = # // ptr में num का address store किया
printf("num की value: %d\n", num);
printf("num का address (&num): %p\n", &num);
printf("ptr में store address: %p\n", ptr);
printf("ptr से मिली value (*ptr): %d\n", *ptr);
return 0;
}
Output:
num की value: 25
num का address (&num): 0x61ff0c
ptr में store address: 0x61ff0c
ptr से मिली value (*ptr): 25
Explanation:
numएक integer variable है जिसकी value 25 है।ptrएक pointer variable है जो integer type का address रख सकता है।ptr = #का मतलब है कि हमनेnumका addressptrमें store किया।- अब जब हम
*ptrलिखते हैं, तो इसका मतलब होता है “उस address पर stored value,” यानी 25।
इस तरह pointer की मदद से हम किसी variable की value को indirectly access कर सकते हैं।
8. Pointer के फायदे (Advantages of Pointer)
C Language में Pointer एक बहुत ही powerful feature है, जो memory access और program performance दोनों को बेहतर बनाता है।
नीचे इसके कुछ प्रमुख फायदे दिए गए हैं
1. Memory Access और Control
Pointer की मदद से हम directly memory address तक पहुँच सकते हैं, जिससे memory का उपयोग अधिक efficiently किया जा सकता है।
2. Function में Call by Reference
Pointer का सबसे बड़ा फायदा ये है कि हम किसी function को address के ज़रिए variable pass कर सकते हैं।
इससे function के अंदर किए गए changes actual variable में reflect होते हैं।
3. Dynamic Memory Allocation
Pointer के बिना malloc(), calloc(), free() जैसी functions का उपयोग करना संभव नहीं है।
ये functions runtime पर memory allocate और free करने में मदद करते हैं।
4. Data Structure Implementation
Pointer का उपयोग linked list, stack, queue, tree और graph जैसे complex data structures को implement करने में किया जाता है।
5. Fast Execution
क्योंकि pointer memory को direct access करता है, इसलिए यह program को faster और efficient बनाता है।
6. Arrays और Strings Handling में मदद
Pointer की मदद से हम arrays और strings को आसानी से traverse और manipulate कर सकते हैं।
9. Conclusion (निष्कर्ष)
इस लेख में आपने जाना कि Pointer in C Language क्या होता है, इसे कैसे declare, initialize और access किया जाता है।
Pointer C भाषा का सबसे महत्वपूर्ण हिस्सा है क्योंकि यह हमें memory के साथ directly काम करने की सुविधा देता है।
जब आप Pointer को अच्छे से समझ लेते हैं, तब आप dynamic memory, arrays, functions और data structures जैसी advanced concepts को बहुत आसानी से समझ सकते हैं।
साधारण शब्दों में —
“Pointer C Language की वह ताकत है जो आपके program को ज़्यादा efficient और memory-friendly बनाती है।”
इसलिए, अगर आप C language सीख रहे हैं, तो Pointer को अच्छी तरह से समझना ज़रूरी है।
व्यक्तिगत अनुभव:
जब मैंने पहली बार pointers के बारे में पढ़ना शुरू किया था, तो मुझे भी समझने में काफी समय लगा। खासकर यह बात कि pointer वास्तव में memory में कहाँ point करता है और * तथा & का सही उपयोग कैसे करना है। इसी वजह से मैंने इस लेख को इस तरह लिखा है कि कोई भी beginner बिना कठिनाई के इसे समझ सके। यदि आप भी शुरुआत कर रहे हैं, तो धैर्य रखें—pointers एक बार समझ आने पर बहुत आसान लगने लगते हैं।
Written by: Aditya (Programming Sikho)