Pointer C लैड्ग्वेज का एक महत्वपूर्ण feature है | यह c लैड्ग्वेज का एक एसा वारियाबले है जिसमे डाटा एक्सैस वैल्यू से ना होकर उसके लोकेशन से होता है pointer variable को हम value at address के नाम से भी जानते है |
इस variable के लिए * सिम्बल का उपयोग किया जाता है |
C भाषा में pointer एक variable होता है जो दूसरे वेरिएबल के address को स्टोर करता है। यह variable प्रकार int, char, array, function या किसी अन्य पॉइंटर का हो सकता है।
POinter के द्वारा हम डाटा को variable के address की सहायता से manipulate करते है | pointer variable किसी डाटा आइटम जैसे variable या array elements के location number या address को hold करके रखता है |pointer एक एसी पावर फूल taknic है जिसके द्वारा हम data को indirect access कर सकते है क्यूंकी यह किसी variable की memory मे स्थापित रहता है |
Example :--- int x =222;
यहा पर x एक variable है जिसकी value 222 है और यह मेमोरी मे मान लीजिये 4000 लोकेशन नंबर पर है तो हम 222 को variable के नाम से भी एक्सैस कर सकते है और location number 4000 मे स्थित वैल्यू से भी एक्सैस कर सकते है
Declaration of Pointer variable :----
पोइंटर वारियाबले को * symbol के साथ डिक्लैर किया जाता है
<data_type> * <var_name >;
int * ptr ;
किसी पोइंटर वारियाबले को डाइरैक्ट initialize नहीं किया जा सकता initialize करने के लिए & operator का उपयोग किया जाता है
Int * ptr ;
int x=105;
ptr=&x ;
ऊपर दिये गए उदाहरण मे ptr एक integer type pointer variable है और x एक integer type simple variable है जिसमे x का एड्रैस 4000 है तथा ptr का address 2050 है line ptr=&x; x के address को pointer variable ptr मे hold करता है अर्थात ptr का मान 4000 होगा
Address Of (&) Operator in hindi
ऑपरेटर & का उपयोग एक variable का address देता है। लेकिन, हमें varible का address प्रदर्शित करने के लिए %u का उपयोग करने की आवश्यकता है।
- #include<stdio.h>
- main()
- {
- int number=50;
- printf(“value of number is %d, address of number is %u”,number,&number);
- }
Output
value of number is 50, address of number is fff4
Use of Pointer:-----
1.array और data tables को manage करने के लिए pointer अधिक सक्षम है |
2। pointer का उपयोग हम function मे argumen के रूप मे कर सकते है
3। pointer programe के execution speed को बढ़ाता है और complexcity कोप कम करता है
4। dynamic memory allocation मे pointer का upyog किया जाता है
#include<stdio.h>
#include<conio.h>
void main()
{
int v=5;
int *pv;
pv=&v;
clrscr();
printf("%u\n",&v);
printf("%u\n",pv);
printf("%u\n",&pv);
printf("%d\n",v);
printf("%d\n",*pv);
printf("%d\n",*(&v));
getch();
}
65524
65524
65522
5
5
5
Pointer Arithmatic:-----
अन्य vaviable कितरह pointer variable मे भी भिन्न भिन्न arithmatic ऑपरेशन किए जा सकते है |pointer के साथ निम्न arithmatic operations होते है
1। Addition ऑफ two pointer variable
2। multiplication ऑफ आ pointer variable with a constant
3। division ऑफ pointer with constant
example :- int * mptr ;
उपरोक्त उदाहरण मे mptr एक pointer type variable है मान लेते है की इसका एड्रैस मेमोरी मे 23454 है यदि इसके मान को एक बढ़ाना चाहें तो इस पर निम्न task perform करेंगे
mptr++ या ++mptr
mptr=mptr+1
अब पोइंटर मेमोरी मे एड्रैस 23454 के साथ अगली स्टीठी मे जाना चाहेगा
c लैड्ग्वेज मे अगली स्थिति पर पोइंटर को ले जाने के लिए int type के size को जोड़ता है जो निम्न प्रकार से कार्य करता है
example :--
int mptr =mptr + 1*(size of data type)
23454 =23454+(1*2)
23456
void main()
{
int p=5;
float q=2.5
int *iptr;
float *fptr;
clrscr();
printf("\n The value of p=%d",p);
printf("\n The value of q=%f",q);
iptr=&p;
fptr=&q;
printf("\n The value of iptr=%u",iptr);
printf("\n The value of fptr=%u",fptr);
iptr++;
fptr++;
printf("\n The value of iptr=%u",iptr);
printf("\n The value of fptr=%u",fptr);
getch();
}
output:-
the value of p=5
the value of q=2.5
value of iptr==65524
value of fptr==65520
value of iptr==65526
अरे ऑफ प्वाइंटर
अरे ऑफ पॉइंट अभी एक अरे होता है जो दूसरे वेरिएबल के एड्रेस को रखता है एड्रेस जो अरे of pointer में उपस्थित रहता है वह अलग-अलग वेरिएबल के एड्रेस को होल्ड करके रखता है एक सामान्य अरे वेरिएबल में जो नियम लागू होते हैं वही सारे नियम प्वाइटर अरे अथवा अरे of pointer में भी लागू होता है
Void main()
{
Int *a[3];
int x=20,y=30,z=40;
clrscr ()
a[0 ]=&x;
a[1 ]=&y;
a[2 ]=&z;
for (i=0;i<3;i++ )
{
printf ("%d",*(a[I]);
}
getch()
}
}
प्वाइंटर एंड अरे जैसा कि हम जानते हैं की एक अरे सिमिलर टाइप के डाटा का कलेक्शन होता है और मेमोरी में अरे के एलिमेंट कंटीन्यूअस स्टोर होते हैं जब हम किसी अरे को डिक्लेअर करते हैं तो कंपाइलर द्वारा बेस एड्रेस को एलोकेट कर कंटीन्यूअस मेमोरी एलोकेट किया जाता है और बेस एड्रेस अरे के फर्स्ट एलिमेंट का एड्रेस होता है इसके साथ ही कंपाइलर अरे की फर्स्ट एलिमेंट को कांस्टेंट वांटेड के रूप में भी डिफाइन करता है इसे हम नीचे दिए गए उदाहरण के द्वारा आसानी से समझ सकते हैं
void main ()
{
int x[3]={10,20,30};
int *pt;
clrscr ();
pt=&x;
printf("The address of 1st 2nd and 3rd elements");
printf ("%u%u%u",pt,pt+1,pt+2);
printf ("value stored in array%d%d%d",*pt,*(pt+1),*(pt+2));
getch ();
}
प्वाइंटर एंड कैरक्टर स्ट्रिंग
जैसा कि हम जानते हैं एक स्ट्रिंग कैरेक्टर अरे होता है जो अपने में ग्रुप ऑफ कैरेक्टर्स को रखता है यदि हम एक कैरेक्टर pointer को डिक्लेअर करते हैं तो यह एक स्ट्रिंग अथवा एक सिंगल कैरेक्टर को रखता है हम नीचे दिए गए उदाहरण के द्वारा ट्रैक्टर प्वाइंटर को समझ सकते हैं
void main ()
{
char name [ ]="hello";
char *s="hello";
Char *s1= ;
s1=name;
clrscr ();
printf ("String stored at name array %s\n",name);
printf ("String stored at pointer array %s\n",s);
printf ("String stored at pointer array %s\n",s1);
s1++;
printf ("String stored at pointer array %s\n",s1);
getch ();
}
Thankyou sir for this book
ReplyDelete