தொகுதி பாடங்கள் (2/2)
மதிப்பு மற்றும் குறிப்பு மூலம் அனுப்பவும்
C++ இல், நீங்கள் ஒரு செயல்பாட்டிற்கு ஒரு வாதத்தை அனுப்பும் போது, அதைச் செய்ய இரண்டு முக்கிய வழிகள் உள்ளன: மதிப்பின்படி அல்லது குறிப்பு மூலம்.
இந்த வேறுபாட்டைப் புரிந்துகொள்வது நிரலின் சரியான தன்மை மற்றும் செயல்திறன் மேம்படுத்தல் ஆகிய இரண்டிற்கும் முக்கியமாகும்.
மதிப்பின்படி தேர்ச்சி (நகல்)
இயல்பாக, C++ மதிப்பின்படி வாதங்களை அனுப்புகிறது. இதன் பொருள் நினைவகத்தில் தரவுகளின் நகல் உருவாக்கப்பட்டது. செயல்பாட்டின் உள்ளே செய்யப்படும் எந்த மாற்றமும் அசல் மாறியை வெளியே பாதிக்காது:
#include <iostream>
void increment(int n) {
n++; // Modifies only the local copy
}
int main() {
int x = 5;
increment(x);
std::cout << x << std::endl; // Prints 5, x remains unchanged!
return 0;
}குறிப்பு மூலம் கடந்து செல்லவும் (&)
அசல் மாறியை மாற்றியமைக்க செயல்பாட்டை நீங்கள் விரும்பினால் அல்லது பெரிய பொருட்களை (நீண்ட சரங்கள் அல்லது திசையன்கள் போன்றவை) நகலெடுப்பதைத் தவிர்க்க விரும்பினால், நீங்கள் பாஸ் பை ரெஃபரன்ஸ் ஐப் பயன்படுத்த வேண்டும்.
அளவுருவின் வகைக்குப் பிறகு & குறியீட்டைச் சேர்ப்பதன் மூலம் ஒரு குறிப்பு அறிவிக்கப்படுகிறது:
#include <iostream>
void incrementRef(int& n) {
n++; // Modifies the original variable directly
}
int main() {
int x = 5;
incrementRef(x);
std::cout << x << std::endl; // Prints 6!
return 0;
}int& n அளவுரு ஒரு நகல் அல்ல, ஆனால் செயல்பாட்டை அழைக்கும் போது அனுப்பப்பட்ட x மாறிக்கு ** மாற்றுப்பெயர்** (நேரடி குறிப்பு).
நீங்களே முயற்சி செய்து பாருங்கள்
ஒரு முழு எண் n (int& n ஐப் பயன்படுத்தி) மற்றும் அதன் மதிப்பை இரட்டிப்பாக்கும் வெற்றிடமான திரும்பும் வகையுடன் doubleNumber என்ற செயல்பாட்டை வரையறுக்கவும். 10 க்கு துவக்கப்பட்ட மாறி val ஐ முக்கிய பாஸிங்கில் அழைக்கவும், பின்னர் val ஐ அச்சிடவும்.
குறிப்பைக் காட்டு
செயல்பாடு கையொப்பம் ஒரு குறிப்பைக் குறிக்க வகைக்குப் பிறகு `&` எழுத்தைப் பயன்படுத்துகிறது:` void doubleNumber(int& n)`.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
a மற்றும் b (int& a, int& b) ஆகிய இரண்டு முழு எண் குறிப்புகளை எடுத்து ஒரு தற்காலிக மாறி temp ஐப் பயன்படுத்தி அவற்றின் மதிப்புகளை மாற்றும் swap என்ற செயல்பாட்டை வரையறுக்கவும். x மற்றும் y ஐ மாற்றுவதற்கு முக்கியமாக அதை அழைக்கவும், பின்னர் அவற்றை அச்சிடவும்.
குறிப்பைக் காட்டு
பயன்படுத்தவும் `int temp = a; a = b; b = temp;` மதிப்புகளை மாற்ற.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்