सी पॉईंटर्स

paunaZ Pna = 10;
paunaZ* pai = &Pna; // cala pai cyaa pzakar paEZMTr Aahe paEMTiMga Tu D paaa cyaa D cala Pna cyaa pzakar paunaZaMk.

पॉईंटर घोषित करणे

सी भाषेतील पॉईंटर * (एस्टेरिस्क प्रतीक) वापरून घोषित केले जाऊ शकते. याला पॉईंटरचे वर्णन करण्यासाठी वापरल्या जाणार्‍या इंडिरेक्शन पॉईंटर म्हणून देखील ओळखले जाते.

paunaZ *A;//paEZMTr Tu paunaZ
Axar *sai;//paEZMTr Tu Axar

पॉईंटर उदाहरण

आपण वरील आकृतीमध्ये पाहू शकता की पॉईंटर व्हेरिएबल नंबर व्हेरिएबलचा पत्ता, म्हणजेच, एफएफएफ 4 संचयित करते. संख्या व्हेरिएबलचे मूल्य 50 आहे. परंतु पॉईंटर व्हेरिएबल पीचा पत्ता एएए 3 आहे. * (इंडिरेक्शन ऑपरेटर) च्या मदतीने आम्ही पॉईंटर व्हेरिएबल पीचे मूल्य मुद्रित करू शकतो. वरील आकृतीसाठी स्पष्ट केल्यानुसार पॉईंटर उदाहरण पाहूया.

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ kzmaaMk=50;
paunaZ *pai;
pai=&kzmaaMk;//sTaeAr D paaa cyaa kzmaaMk cala
laiha("paaa cyaa p cala Aahe % \n",pai); // pai samaavaiSTRAahe D paaa cyaa D kzmaaMk mhnauna mauna pai Detae D paaa cyaa kzmaaMk.
laiha("maulya cyaa p cala Aahe %paunaZ \n",*pai); // mhnauna Aamhi maahitaRAahe tae * Aahe vaaparlae Tu derepafrnsa A paEZMTr mhnauna jar Aamhi mauna *pai, Aamhi vaila maiQvaa D maulya saMgazhita var D paaa samaavaiST vDara pai.
vaapasakra 0;
}

आउटपुट

paaa cyaa kzmaaMk cala Aahe PpafPpafPpafR4
paaa cyaa pai cala Aahe PpafPpafPpafR4
maulya cyaa pai cala Aahe 50

अ‍ॅरे पॉईंटर

paunaZ PAar[10];
paunaZ *pai[10]=&PAar; // cala pai cyaa pzakar paEZMTr Aahe paEMTiMga Tu D paaa cyaa Pk paunaZaMk AWre PAar.

फंक्शनचे पॉईंटर

qaalai DSaZvaa (paunaZ);
qaalai(*pai)(paunaZ) = &pzaDSaZna; // paEZMTr pai Aahe paEMTiMga Tu D paaa cyaa A kayaZ

संरचनेचे पॉईंटर

rcanaa PsaTi {
paunaZ mai;
ApaunaZ Ppaf;
}saMDBaZ;
rcanaa PsaTi *pai = &saMDBaZ;

पॉईंटरचा फायदा

पॉईंटरचा वापर

सी भाषेत पॉईंटर्सचे बरेच अनुप्रयोग आहेत. 1) डायनॅमिक मेमरी वाटप सी भाषेत, आम्ही पॉईंटर वापरला जातो तेथे मॅलोक () आणि कॅलोक () फंक्शन्सचा वापर करून मेमरीचे गतिकरित्या वाटप करू शकतो. २) अ‍ॅरे, फंक्शन्स आणि रचना सी भाषेतील पॉईंटर्स अ‍ॅरे, फंक्शन्स आणि स्ट्रक्चर्समध्ये मोठ्या प्रमाणात वापरले जातात. हे कोड कमी करते आणि कार्यप्रदर्शन सुधारते.

(&) ऑपरेटरचा पत्ता

ऑपरेटरचा पत्ता '&' व्हेरिएबलचा पत्ता परत करतो. परंतु, व्हेरिएबलचा पत्ता प्रदर्शित करण्यासाठी आम्हाला %यू वापरण्याची आवश्यकता आहे.

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ kzmaaMk=50;
laiha("maulya cyaa kzmaaMk Aahe %paunaZ, paaa cyaa kzmaaMk Aahe %u",kzmaaMk,&kzmaaMk);
vaapasakra 0;
}

आउटपुट

maulya cyaa kzmaaMk Aahe 50, paaa cyaa kzmaaMk Aahe PpafPpafPpafR4

शून्य पॉईंटर

paunaZ *pai=Saunya;

बहुतेक लायब्ररीत, पॉईंटरचे मूल्य 0 (शून्य) आहे.

पॉईंटर प्रोग्राम 3 रा व्हेरिएबल न वापरता दोन नंबर स्वॅप करण्यासाठी.

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ A=10,bai=20,*paiR1=&A,*paiR2=&bai;

laiha("Aaoai svaWpa: *pai 1=%paunaZ *pai 2=%paunaZ",*paiR1,*paiR2);
*paiR1=*paiR1+*paiR2;
*paiR2=*paiR1-*paiR2;
*paiR1=*paiR1-*paiR2;
laiha("\DMijamata svaWpa: *pai 1=%paunaZ *pai 2=%paunaZ",*paiR1,*paiR2);

vaapasakra 0;
}

आउटपुट

Aaoai svaWpa: *paiR1=10 *paiR2=20
naMtar svaWpa: *paiR1=20 *paiR2=10

कॉम्प्लेक्स पॉईंटर्स वाचणे

सी मधील कॉम्प्लेक्स पॉईंटर्स वाचताना बर्‍याच गोष्टी विचारात घेतल्या पाहिजेत.

ऑपरेटर अग्रक्रम असोसिएटिव्हिटी (), [] 1 डावीकडून उजवीकडे *, अभिज्ञापक 2 उजवीकडे डावीकडे डेटा प्रकार 3 -

येथे, आपण हे लक्षात घेतले पाहिजे, (): हा ऑपरेटर एक ब्रॅकेट ऑपरेटर आहे जो फंक्शन घोषित करण्यासाठी आणि परिभाषित करण्यासाठी वापरला जातो. []: हा ऑपरेटर अ‍ॅरे सबस्क्रिप्ट ऑपरेटर आहे *: हा ऑपरेटर पॉईंटर ऑपरेटर आहे. अभिज्ञापक: हे पॉईंटरचे नाव आहे. प्राधान्य नेहमीच याला नियुक्त केले जाईल. डेटा प्रकार: डेटा प्रकार हा व्हेरिएबलचा प्रकार आहे ज्यावर पॉईंटर निर्देशित करण्याचा हेतू आहे. यात स्वाक्षरीकृत इंट, लाँग इ. सारख्या सुधारकांचा समावेश आहे.

पॉईंटर कसे वाचायचे: इंट (*पी) [10].

पॉईंटर वाचण्यासाठी, आपण ते () आणि [] समान प्राधान्य असणे आवश्यक आहे. म्हणून, त्यांच्या असोसिएटिव्हिटीचा येथे विचार केला पाहिजे. असोसिएटिव्हिटी डावीकडून उजवीकडे आहे, म्हणून प्राधान्य () वर जाते. ब्रॅकेट () च्या आत, पॉईंटर ऑपरेटर * आणि पॉईंटर नाव (अभिज्ञापक) पी समान प्राधान्य आहे. म्हणूनच, त्यांच्या सहयोगीतेचा येथे विचार केला पाहिजे जो उजवीकडे डावीकडे आहे, म्हणून प्राधान्य पीला जाते आणि दुसरे प्राधान्य *वर जाते. []] ला 3 रा प्राधान्य द्या कारण डेटा प्रकारात शेवटचे प्राधान्य आहे. म्हणून पॉईंटर खालीलप्रमाणे दिसेल. चार -> 4 * -> 2 पी -> 1 [10] -> 3 पॉईंटर वाचले जाईल कारण पी आकार 10 च्या पूर्णांकांच्या अ‍ॅरेसाठी पॉईंटर आहे.

उदाहरण

ksae Tu vaacaa D qaalaila paEZMTr?

खालील पॉईंटर कसे वाचायचे?

paunaZ (*pai)(paunaZ (*)[2], paunaZ (*)qaalai))

स्पष्टीकरण

हे पॉईंटर म्हणून वाचले जाईल कारण पी अशा फंक्शनचे पॉईंटर आहे जे प्रथम मापदंड पॉईंटर म्हणून आकाराच्या दोन पूर्णांकांच्या एक-आयामी अ‍ॅरेचे आणि दुसरे पॅरामीटर म्हणून स्वीकारते जे फंक्शनचे पॉईंटर म्हणून जे पॅरामीटर शून्य आहे आणि रिटर्न प्रकार पूर्णांक आहे.

◀ मागील पुढील ▶