व्हॅल्यूद्वारे कॉल करा आणि सी मध्ये संदर्भानुसार कॉल करा

सी भाषेत फंक्शनमध्ये डेटा पास करण्यासाठी दोन पद्धती आहेत, म्हणजेच, मूल्यानुसार कॉल करा आणि संदर्भानुसार कॉल करा.

चला व्हॅल्यूद्वारे कॉल समजून घेऊया आणि सी भाषेत संदर्भानुसार कॉल करा.

सी मध्ये व्हॅल्यूद्वारे कॉल करा

कॉलद्वारे मूल्य पद्धतीने, वास्तविक पॅरामीटर्सचे मूल्य औपचारिक पॅरामीटर्समध्ये कॉपी केले जाते. दुस words ्या शब्दांत, आम्ही असे म्हणू शकतो की व्हेरिएबलचे मूल्य कॉलमध्ये फंक्शन कॉलमध्ये मूल्य पद्धतीने वापरले जाते. कॉलद्वारे मूल्य पद्धतीने, आम्ही औपचारिक पॅरामीटरद्वारे वास्तविक पॅरामीटरचे मूल्य सुधारित करू शकत नाही. व्हॅल्यूद्वारे कॉलमध्ये, वास्तविक आणि औपचारिक पॅरामीटर्ससाठी भिन्न मेमरी वाटप केली जाते कारण वास्तविक पॅरामीटरचे मूल्य औपचारिक पॅरामीटरमध्ये कॉपी केले जाते. वास्तविक पॅरामीटर हा युक्तिवाद आहे जो फंक्शन कॉलमध्ये वापरला जातो तर औपचारिक पॅरामीटर हा युक्तिवाद आहे जो फंक्शन परिभाषामध्ये वापरला जातो. खाली दिलेल्या उदाहरणाद्वारे सी भाषेतील मूल्यानुसार कॉलची संकल्पना समजून घेण्याचा प्रयत्न करूया:

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
qaalai baDlaa(paunaZ saMqyaa) {
laiha("Aaoai jaaedta Aahe maulya Aata kayaZ saMqyaa=%paunaZ \n",saMqyaa);
saMqyaa=saMqyaa+100;
laiha("naMtar jaaedta Aahe maulya Aata kayaZ saMqyaa=%paunaZ \n", saMqyaa);
}
paunaZ mauqya() {
paunaZ =100;
laiha("Aaoai kayaZ kla x=%paunaZ \n", PKsa);
baDlaa(PKsa);//jaataRAahe maulya maoyae kayaZ
laiha("naMtar kayaZ kla x=%paunaZ \n", PKsa);
vaapasakra 0;
}

आउटपुट

Aaoai kayaZ kla PKsa=100
Aaoai jaaedtaRAahe maulya Aata kayaZ saMqyaa=100
naMtar jaaedtaRAahe maulya Aata kayaZ saMqyaa=200
naMtar kayaZ kla PKsa=100

व्हॅल्यू उदाहरणानुसार कॉल करा: दोन व्हेरिएबल्सची मूल्ये अदलाबदल करणे

उदाहरण

#vaapara <PsaTidiAayaAae.Pca>
qaalai svaWpa(paunaZ , paunaZ); //pzaaeTaeTaEpa cyaa D kayaZ
paunaZ mauqya()
{
paunaZ A = 10;
paunaZ bai = 20;
laiha("Aaoai ADlaabaDla D maulyae maoyae mauqya a = %paunaZ, b = %paunaZ\n",A,bai); // mauna D maulya cyaa A Aanai bai maoyae mauqya
svaWpa(A,bai);
laiha("naMtar ADlaabaDla maulyae maoyae mauqya a = %paunaZ, b = %paunaZ\n",A,bai); // D maulya cyaa vaastavaik maapaDMd kra naahi baDlaa vDara baDlataRAahe D AaIpacaarik maapaDMd maoyae kla vDara maulya, A = 10, bai = 20
}
qaalai svaWpa (paunaZ A, paunaZ bai)
{
paunaZ Tempa;
Tempa = A;
A=bai;
bai=Tempa;
laiha("naMtar ADlaabaDla maulyae maoyae kayaZ a = %paunaZ, b = %paunaZ\n",A,bai); // AaIpacaarik maapaDMd, A = 20, bai = 10
}

आउटपुट

Aaoai ADlaabaDla D maulyae maoyae mauqya A = 10, bai = 20
naMtar ADlaabaDla maulyae maoyae kayaZ A = 20, bai = 10
naMtar ADlaabaDla maulyae maoyae mauqya A = 10, bai = 20

सी मध्ये संदर्भानुसार कॉल करा

संदर्भानुसार कॉलमध्ये, व्हेरिएबलचा पत्ता वास्तविक पॅरामीटर म्हणून फंक्शन कॉलमध्ये जातो. वास्तविक पॅरामीटर्सचे मूल्य औपचारिक पॅरामीटर्स बदलून सुधारित केले जाऊ शकते कारण वास्तविक पॅरामीटर्सचा पत्ता पास झाला आहे. संदर्भानुसार कॉलमध्ये, मेमरी वाटप दोन्ही औपचारिक पॅरामीटर्स आणि वास्तविक पॅरामीटर्ससाठी समान आहे. फंक्शनमधील सर्व ऑपरेशन्स वास्तविक पॅरामीटर्सच्या पत्त्यावर संग्रहित मूल्यावर केल्या जातात आणि सुधारित मूल्य त्याच पत्त्यावर संग्रहित होते. संदर्भानुसार कॉलसाठी खालील उदाहरणाचा विचार करा.

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
qaalai baDlaa(paunaZ *saMqyaa) {
laiha("Aaoai jaaedta Aahe maulya Aata kayaZ saMqyaa=%paunaZ \n",*saMqyaa);
(*saMqyaa) += 100;
laiha("naMtar jaaedta Aahe maulya Aata kayaZ saMqyaa=%paunaZ \n", *saMqyaa);
}
paunaZ mauqya() {
paunaZ PKsa=100;
laiha("Aaoai kayaZ kla x=%paunaZ \n", PKsa);
baDlaa(&PKsa);//jaataRAahe saMDBaZ maoyae kayaZ
laiha("naMtar kayaZ kla x=%paunaZ \n", PKsa);
vaapasakra 0;
}

आउटपुट

Aaoai kayaZ kla PKsa=100
Aaoai jaaedtaRAahe maulya Aata kayaZ saMqyaa=100
naMtar jaaedtaRAahe maulya Aata kayaZ saMqyaa=200
naMtar kayaZ kla PKsa=200

संदर्भानुसार कॉल करा उदाहरणः दोन व्हेरिएबल्सची मूल्ये अदलाबदल करणे

उदाहरण

#vaapara <PsaTidiAayaAae.Pca>
qaalai svaWpa(paunaZ *, paunaZ *); //pzaaeTaeTaEpa cyaa D kayaZ
paunaZ mauqya()
{
paunaZ A = 10;
paunaZ bai = 20;
laiha("Aaoai ADlaabaDla D maulyae maoyae mauqya a = %paunaZ, b = %paunaZ\n",A,bai); // mauna D maulya cyaa A Aanai bai maoyae mauqya
svaWpa(&A,&bai);
laiha("naMtar ADlaabaDla maulyae maoyae mauqya a = %paunaZ, b = %paunaZ\n",A,bai); // D maulyae cyaa vaastavaik maapaDMd kra baDlaa maoyae kla vDara saMDBaZ, A = 10, bai = 20
}
qaalai svaWpa (paunaZ *A, paunaZ *bai)
{
paunaZ Tempa;
Tempa = *A;
*A=*bai;
*bai=Tempa;
laiha("naMtar ADlaabaDla maulyae maoyae kayaZ a = %paunaZ, b = %paunaZ\n",*A,*bai); // AaIpacaarik maapaDMd, A = 20, bai = 10
}

आउटपुट

Aaoai ADlaabaDla D maulyae maoyae mauqya A = 10, bai = 20
naMtar ADlaabaDla maulyae maoyae kayaZ A = 20, bai = 10
naMtar ADlaabaDla maulyae maoyae mauqya A = 20, bai = 10

मूल्यानुसार कॉल आणि सी मधील संदर्भानुसार कॉल दरम्यान फरक

नाही. संदर्भानुसार व्हॅल्यू कॉलद्वारे कॉल करा 1 मूल्याची एक प्रत फंक्शनमध्ये दिली जाते फंक्शनच्या आत केलेले 2 बदल केवळ फंक्शनपुरते मर्यादित आहेत. औपचारिक पॅरामीटर्स बदलून वास्तविक पॅरामीटर्सची मूल्ये बदलत नाहीत. फंक्शनच्या आत केलेले बदल फंक्शनच्या बाहेर देखील सत्यापित करतात. वास्तविक पॅरामीटर्सची मूल्ये औपचारिक पॅरामीटर्स बदलून बदलतात. 3 वास्तविक आणि औपचारिक वितर्क भिन्न मेमरी ठिकाणी तयार केले जातात वास्तविक आणि औपचारिक वितर्क समान मेमरी ठिकाणी तयार केले जातात

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