Pointer in C in Hindi
Pointers In C Language In Hindi
C में pointer पढ़ना और समझना बहुत आसान है और C में pointer पढ़ना जरुरी भी है क्योंकि कई काम जैसे dynamic memory allocation pointer के बिना करना करना संभव नहीं है |
C में pointer पढ़ने के लिए एक सरल example से करते हैं जैसे
C में कोई वेरिएबल वास्तव में memory की location ही है जहाँ पर उस वेरिएबल की वैल्यू स्टोर होती है और उसका एक एड्रेस होता है जिसको हम & से शो करते हैं
#include <stdio.h> int main () { int var1=20; char var2[5]={'a','m','i','t',''}; printf("Address of var1 variable: %x and value stored at this address %dn", &var1,var1 ); printf("Address of var2 variable: %x and value stored at this address %sn", &var2,var2 ); return 0; } Output
Address of var1 variable: bff5a400 and value stored at this address 20 Address of var2 variable: bff5a3f6 and value stored at this address amit
ऊपर दिए गए example में वेरिएबल की वैल्यू तो सभी कंप्यूटर में एक सामान होगी पर एड्रेस की वैल्यू अलग हो सकती है क्योंकि एड्रेस की वैल्यू आपके कंप्यूटर के ऑपरेटिंग सिस्टम और स्टोरेज मेडियम पर निर्भर करती है |
यहां ध्यान देने की बात ये है की हम C में किसी भी वेरिएबल का एड्रेस &वेरिएबल के साथ दे कर पता कर सकते हैं और C में एड्रेस long hexadecimal number data type में होता है जिसको प्रिंट करने के लिए %x का इस्तेमाल होता है
What is pointer ?
वास्तव में पॉइंटर भी C में एक तरह वेरिएबल ही है जिसका काम होता है किसी और वेरिएबल का एड्रेस सेव करना और पॉइंटर डिफाइन करने के लिए वेरिएबल नाम के आगे * लगाना होता है |
Syntax
data_type *variable_name;
int num; /* समान्य integer वेरिएबल */
int *p_num; /* integer pointer वेरिएबल */
इसी तरह अलग अलग डाटा टाइप के लिए पॉइंटर ऐसे डिफाइन करते हैं
double *dp;
float *fp;
char *cp;
यहां पर ध्यान देने की बात ये है की वेरिएबल के नाम में सामान्य C का नियम लागू होगा बस नाम के पहले * लगाना होगा |
How to Use Pointers?
- यहां पर हम पॉइंटर को डिफाइन करते हैं
- फिर उसमें उसके डाटा टाइप के हिसाब से किसी वेरिएबल का एड्रेस स्टोर करते हैं
- और फिर उस वैल्यू को पॉइंटर से एक्सेस करके जो चेंज करना होता है उसे चेंज करते हैं या उसे प्रिंट करते हैं
Pointer Example
#include <stdio.h> int main () { int num = 20; /* समान्य integer वेरिएबल declare किया */ int *p_num; /* pointer वेरिएबल declare किया */ p_num = # /* यहाँ पर हम num नाम के वेरिएबल का एड्रेस p_num में स्टोर कर रहे हैं */ printf("Address of var variable: %xn", &num ); /* address stored in pointer variable */ printf("Address stored in p_num variable: %xn", p_num ); /* access the value using the pointer */ printf("Value of *p_num variable: %dn", *p_num ); return 0; }
Output
Address of num variable: bffd8b3c Address stored in p_num variable: bffd8b3c Value of *p_num variable: 20
यहां पर पहले दोनों ऑउटपुट एक सामान है क्योंकि वो दोनों ही एक वैल्यू को शो कर रहे हैं जो की num वेरिएबल का एड्रेस है |
यहां पर एक बात और है की हम पॉइंटर के नाम के आगे * लगाकर उस एड्रेस की वैल्यू भी एक्सेस कर सकते हैं जैसा की हमने अंतिम वाले आउटपुट में किया *p_num से वेरिएबल num की वैल्यू रीड कर ली |
NULL Pointers
जब तक पॉइंटर के लिए हमारे पास कोई एड्रेस नहीं है तब तक हम उस पॉइंटर में NULL वैल्यू स्टोर कर देते हैं जिससे उसमें कोई garbage वैल्यू ना रह जाये | इस तरह के पॉइंटर को NULL Pointer कहते हैं
Example
#include <stdio.h> int main () { int *p = NULL; printf("The value of p is : %xn", p ); return 0; } output
The value of ptr is 0
यहां पॉइंटर p में NULL value है इसलिए इसको प्रिंट करने पर 0 प्रिंट होगा |