C++ இல் சுட்டிகள் மற்றும் குறிப்புகளைப் புரிந்துகொள்வது
சுட்டிகள் மற்றும் குறிப்புகள் C++ இல் உள்ள அடிப்படைக் கருத்துகளாகும், அவை டெவலப்பர்கள் நினைவகத்தை நிர்வகிக்கவும் மாறிகளை திறமையாக கையாளவும் உதவும். உகந்த மற்றும் பிழை இல்லாத குறியீட்டை எழுதுவதற்கு அவற்றுக்கிடையேயான வேறுபாடுகளைப் புரிந்துகொள்வது முக்கியமானது.
இந்த கட்டுரையில், சுட்டிக்காட்டி மாறிகள் மற்றும் குறிப்பு மாறிகள் ஆகியவற்றுக்கு இடையேயான முக்கிய வேறுபாடுகளை ஆராய்வோம், அவற்றின் தொடரியல், பயன்பாடு மற்றும் பல்வேறு நிரலாக்க சூழ்நிலைகளில் உள்ள தாக்கங்கள் உட்பட. முடிவில், ஒவ்வொன்றையும் திறம்பட எப்போது, எப்படிப் பயன்படுத்துவது என்பதை நீங்கள் தெளிவாகப் புரிந்துகொள்வீர்கள்.
கட்டளை | விளக்கம் |
---|---|
int* ptr = &a; | ஒரு சுட்டி மாறியை அறிவித்து அதற்கு 'a' என்ற மாறியின் முகவரியை ஒதுக்குகிறது. |
int& ref = b; | 'b' மாறியைக் குறிக்கும் குறிப்பு மாறியை அறிவிக்கிறது. |
*ptr = 10; | 'ptr' ஆல் சுட்டிக்காட்டப்பட்ட மாறியின் மதிப்பை மாற்றியமைக்கிறது. |
ref = 10; | 'ref' ஆல் குறிப்பிடப்படும் மாறியின் மதிப்பை மாற்றியமைக்கிறது. |
void modifyPointer(int* p) | ஒரு சுட்டியை முழு எண்ணுக்கு அளவுருவாகக் கொண்டு செல்லும் செயல்பாடு. |
void modifyReference(int& r) | ஒரு முழு எண்ணை அளவுருவாகக் குறிப்பிடும் செயல்பாடு. |
modifyPointer(&x); | modifyPointer செயல்பாட்டை அழைக்கிறது மற்றும் அதற்கு 'x' என்ற முகவரியை அனுப்புகிறது. |
modifyReference(y); | modifyReference செயல்பாட்டை அழைக்கிறது மற்றும் குறிப்பு மூலம் 'y' ஐ அனுப்புகிறது. |
சுட்டி மற்றும் குறிப்பு எடுத்துக்காட்டுகளின் ஆழமான பகுப்பாய்வு
முதல் ஸ்கிரிப்ட் C++ இல் சுட்டிகளைப் பயன்படுத்துவதை நிரூபிக்கிறது. விழாவில் pointerExample, ஒரு முழு எண் மாறியை அறிவிக்கிறோம் a மற்றும் ஒரு சுட்டி மாறி int* ptr என்ற முகவரியைக் கொண்டுள்ளது a. இதன் மதிப்பைக் கையாள இது நம்மை அனுமதிக்கிறது a மறைமுகமாக மூலம் *ptr. சேமிக்கப்பட்ட முகவரியில் மதிப்பை மாற்றுவதன் மூலம் ptr, இன் மதிப்பையும் மாற்றுகிறோம் a. டைனமிக் மெமரி ஒதுக்கீடு, இணைக்கப்பட்ட பட்டியல்கள் போன்ற தரவு கட்டமைப்புகள் மற்றும் நேரடி நினைவக கையாளுதல் தேவைப்படும் சில அல்காரிதம்களை செயல்படுத்துதல் போன்ற காட்சிகளில் பயனுள்ளதாக இருக்கும் மாறிகளின் மறைமுக அணுகல் மற்றும் மாற்றங்களுக்கு சுட்டிகள் எவ்வாறு பயன்படுத்தப்படலாம் என்பதை இது நிரூபிக்கிறது.
ஸ்கிரிப்ட்டின் இரண்டாம் பகுதி C++ இல் குறிப்புகளை விளக்குகிறது. செயல்பாடு referenceExample ஒரு முழு எண் மாறியை அறிவிக்கிறது b மற்றும் ஒரு குறிப்பு மாறி int& ref என்று நேரடியாகக் குறிப்பிடுகிறது b. மாற்றியமைத்தல் ref மதிப்பை நேரடியாக மாற்றுகிறது b. சுட்டிகளைப் போலன்றி, குறிப்புகள் பூஜ்யமாக இருக்க முடியாது மற்றும் அறிவிக்கப்படும்போது துவக்கப்பட வேண்டும். செயல்பாடு அளவுருக்கள் மற்றும் ஒரு செயல்பாட்டிலிருந்து பல மதிப்புகளை திரும்பப் பெறுதல் போன்ற குறிப்பு மற்றும் குறிப்பிடப்பட்ட மாறிக்கு இடையேயான உறவு மாறாமல் இருக்கும் போது இது அவற்றைப் பாதுகாப்பானதாகவும் எளிதாகவும் பயன்படுத்துகிறது.
சுட்டி மற்றும் குறிப்பு மாற்றத்தின் விரிவான செயல்பாடு
இரண்டாவது ஸ்கிரிப்ட் சுட்டிகள் மற்றும் செயல்பாடுகளுக்கான குறிப்புகளை அனுப்புவதில் கவனம் செலுத்துகிறது. செயல்பாடு modifyPointer ஒரு முழு எண்ணுக்கு ஒரு சுட்டியை அதன் அளவுருவாக எடுத்துக்கொள்கிறது, இது சுட்டிக்காட்டி மூலம் முழு எண்ணின் மதிப்பை மாற்ற அனுமதிக்கிறது. முக்கிய செயல்பாட்டில், modifyPointer என்ற முகவரியுடன் அழைக்கப்படுகிறார் x, இது மாறுகிறது xஇன் மதிப்பு. இதேபோல், செயல்பாடு modifyReference ஒரு முழு எண்ணுக்கு ஒரு குறிப்பை எடுத்துக்கொள்கிறது, இது முழு எண்ணின் மதிப்பை நேரடியாக மாற்ற அனுமதிக்கிறது. முக்கிய செயல்பாடு அழைப்புகள் modifyReference உடன் y, இது மாறுகிறது yஇன் மதிப்பு.
செயல்பாடுகளில் தரவை அனுப்பவும் மாற்றவும் வெவ்வேறு வழிகளில் சுட்டிகள் மற்றும் குறிப்புகள் பயன்படுத்தப்படலாம் என்பதை இது நிரூபிக்கிறது. சுட்டிகளைப் பயன்படுத்துவது, குறிப்புகளைப் போலவே அசல் மாறியின் மதிப்பை மாற்றியமைக்க செயல்பாடுகளை அனுமதிக்கிறது. இருப்பினும், சுட்டிகள் வெவ்வேறு மாறிகளை சுட்டிக்காட்டுவது அல்லது பூஜ்யத்தை ஒதுக்குவது போன்ற அதிக நெகிழ்வுத்தன்மையை வழங்குகிறது, இது குறிப்புகள் செய்யாது. C++ நிரலாக்கத்தில் தகவலறிந்த முடிவுகளை எடுப்பதற்கும், திறமையான மற்றும் பாதுகாப்பான குறியீடு நடைமுறைகளை உறுதி செய்வதற்கும் இந்த வேறுபாடுகளைப் புரிந்துகொள்வது அவசியம்.
C++ இல் சுட்டிகள் மற்றும் குறிப்புகளுக்கு இடையே உள்ள வேறுபாடுகளை ஆராய்தல்
சி++ நிரலாக்க எடுத்துக்காட்டு
#include <iostream>
using namespace std;
void pointerExample() {
int a = 5;
int* ptr = &a; // Pointer to a
cout << "Pointer Example:" << endl;
cout << "Value of a: " << a << endl;
cout << "Pointer ptr points to: " << *ptr << endl;
*ptr = 10; // Modify a through ptr
cout << "New value of a: " << a << endl;
}
void referenceExample() {
int b = 5;
int& ref = b; // Reference to b
cout << "Reference Example:" << endl;
cout << "Value of b: " << b << endl;
cout << "Reference ref refers to: " << ref << endl;
ref = 10; // Modify b through ref
cout << "New value of b: " << b << endl;
}
int main() {
pointerExample();
referenceExample();
return 0;
}
C++ இல் சுட்டி மற்றும் குறிப்பு மாறிகளை பகுப்பாய்வு செய்தல்
C++ குறியீடு ஆர்ப்பாட்டம்
#include <iostream>
using namespace std;
void modifyPointer(int* p) {
*p = 20;
}
void modifyReference(int& r) {
r = 20;
}
int main() {
int x = 10;
int y = 10;
cout << "Initial x: " << x << endl;
modifyPointer(&x); // Pass by pointer
cout << "Modified x through pointer: " << x << endl;
cout << "Initial y: " << y << endl;
modifyReference(y); // Pass by reference
cout << "Modified y through reference: " << y << endl;
return 0;
}
சுட்டிகள் மற்றும் குறிப்புகளின் மேம்பட்ட அம்சங்களை ஆராய்தல்
அவற்றின் அடிப்படைப் பயன்பாடுகளுக்கு கூடுதலாக, C++ இல் உள்ள சுட்டிகள் மற்றும் குறிப்புகள் மிகவும் மேம்பட்ட நிரலாக்கக் கருத்துகளில் முக்கியப் பங்கு வகிக்கின்றன. அத்தகைய ஒரு அம்சம் சுட்டி எண்கணிதத்தின் கருத்து ஆகும், இது திறமையான வழிசெலுத்தல் மற்றும் வரிசைகளை கையாள அனுமதிக்கிறது. எடுத்துக்காட்டாக, ஒரு சுட்டியை அதிகரிப்பது அதை ஒரு வரிசையில் உள்ள அடுத்த உறுப்புக்கு நகர்த்துகிறது. தனிப்பயன் தரவு கட்டமைப்புகளை செயல்படுத்துதல் அல்லது வன்பொருளுடன் இடைமுகப்படுத்துதல் போன்ற குறைந்த-நிலை நினைவக கையாளுதல் சம்பந்தப்பட்ட காட்சிகளில் இது மிகவும் பயனுள்ளதாக இருக்கும்.
மறுபுறம், ஆபரேட்டர் ஓவர்லோடிங்கில் குறிப்புகள் பெரிதும் பயன்படுத்தப்படுகின்றன, இது பயனர் வரையறுக்கப்பட்ட வகைகளில் ஆபரேட்டர்களுக்கான தனிப்பயன் நடத்தையை வரையறுக்க உதவும் அம்சமாகும். இந்த ஓவர்லோடட் ஆபரேட்டர்களுக்கான குறிப்புகளாக பொருட்களை அனுப்புவதன் மூலம், C++ திறமையான நினைவக பயன்பாட்டை உறுதிசெய்கிறது மற்றும் பொருட்களை நகலெடுப்பதை தவிர்க்கிறது. கூடுதலாக, குறிப்புகள் நகல் கட்டமைப்பாளர்கள் மற்றும் ஒதுக்கீட்டு ஆபரேட்டர்களை செயல்படுத்துவதில் ஒருங்கிணைந்தவை, வகுப்புகளில் வள மேலாண்மையை சரியான முறையில் கையாளுவதை உறுதிசெய்கிறது, குறிப்பாக டைனமிக் நினைவக ஒதுக்கீட்டைக் கையாளும் போது.
C++ இல் சுட்டிகள் மற்றும் குறிப்புகள் பற்றி பொதுவாகக் கேட்கப்படும் கேள்விகள்
- சுட்டி மாறி என்றால் என்ன?
- சுட்டி மாறி என்பது மற்றொரு மாறியின் நினைவக முகவரியைச் சேமிக்கும் ஒரு மாறி ஆகும். இது சுட்டிக்காட்டும் மாறியின் மறைமுக அணுகல் மற்றும் மாற்றத்தை அனுமதிக்கிறது.
- குறிப்பு மாறி என்றால் என்ன?
- ஒரு குறிப்பு மாறி என்பது மற்றொரு மாறிக்கான மாற்றுப்பெயர். அறிவிக்கப்படும்போது இது துவக்கப்பட வேண்டும் மற்றும் மற்றொரு மாறியைக் குறிப்பிடுவதற்கு மீண்டும் ஒதுக்க முடியாது.
- ஒரு சுட்டி பூஜ்யமாக இருக்க முடியுமா?
- ஆம், எந்த ஒரு செல்லுபடியான நினைவக இருப்பிடத்தையும் சுட்டிக்காட்டவில்லை என்பதைக் குறிக்க, ஒரு சுட்டிக்கு பூஜ்ய மதிப்பை (C++11 மற்றும் அதற்குப் பிந்தையவற்றில் nullptr) ஒதுக்கலாம்.
- ஒரு குறிப்பு பூஜ்யமாக இருக்க முடியுமா?
- இல்லை, ஒரு குறிப்பு செல்லுபடியாகும் மாறியைக் குறிக்க வேண்டும் மற்றும் பூஜ்யமாக இருக்க முடியாது.
- ஒரு செயல்பாட்டிற்கு ஒரு சுட்டியை எவ்வாறு அனுப்புவது?
- செயல்பாட்டு அளவுருவில் சுட்டிக்காட்டி வகையைக் குறிப்பிடுவதன் மூலமும், ஆபரேட்டரின் முகவரி (&) ஐப் பயன்படுத்தி மாறியின் முகவரியை அனுப்புவதன் மூலமும் நீங்கள் ஒரு செயல்பாட்டிற்கு ஒரு சுட்டியை அனுப்புகிறீர்கள்.
- ஒரு செயல்பாட்டிற்கான குறிப்பை எவ்வாறு அனுப்புவது?
- செயல்பாட்டு அளவுருவில் குறிப்பு வகையைக் குறிப்பிடுவதன் மூலமும், ஆபரேட்டரின் முகவரியைப் பயன்படுத்தாமல் நேரடியாக மாறியை அனுப்புவதன் மூலமும் நீங்கள் ஒரு செயல்பாட்டிற்கான குறிப்பை அனுப்புகிறீர்கள்.
- சுட்டி எண்கணிதம் என்றால் என்ன?
- சுட்டி எண்கணிதம் சுட்டிகளில் கூட்டல் மற்றும் கழித்தல் போன்ற செயல்பாடுகளை உள்ளடக்கியது, சுட்டி மதிப்பை அதிகரிப்பதன் மூலம் அல்லது குறைப்பதன் மூலம் வரிசை உறுப்புகள் வழியாக வழிசெலுத்தலை அனுமதிக்கிறது.
- ஆபரேட்டர் ஓவர்லோடிங் என்றால் என்ன?
- ஆபரேட்டர் ஓவர்லோடிங், பயனர் வரையறுக்கப்பட்ட வகைகளில் ஆபரேட்டர்களுக்கான தனிப்பயன் நடத்தையை வரையறுக்க அனுமதிக்கிறது. திறமையான நினைவகப் பயன்பாட்டை உறுதிப்படுத்த, ஆபரேட்டர் ஓவர்லோடிங்கில் குறிப்புகள் பெரும்பாலும் பயன்படுத்தப்படுகின்றன.
- செயல்பாட்டு அளவுருக்களில் சுட்டிகள் மற்றும் குறிப்புகளுக்கு என்ன வித்தியாசம்?
- சுட்டிகள் பூஜ்யமாக இருக்கலாம் மற்றும் செயல்பாட்டிற்குள் மீண்டும் ஒதுக்கப்படலாம், இது அதிக நெகிழ்வுத்தன்மையை வழங்குகிறது. குறிப்புகள் பூஜ்யமாக இருக்க முடியாது மற்றும் அவர்களின் வாழ்நாள் முழுவதும் ஒரே மாறியைக் குறிப்பிட வேண்டும், இது பாதுகாப்பையும் எளிமையையும் வழங்குகிறது.
சுட்டிகள் மற்றும் குறிப்புகள் பற்றிய விவாதத்தை முடித்தல்
சி++ நிரலாக்கத்தில் சுட்டிகள் மற்றும் குறிப்புகள் இன்றியமையாத கருவிகள், ஒவ்வொன்றும் தனித்தனி நோக்கங்களுக்காக சேவை செய்கின்றன. சுட்டிகள் நினைவக முகவரிகளுடன் நெகிழ்வுத்தன்மையை வழங்குகின்றன மற்றும் சுட்டிக்காட்டி எண்கணிதத்தை அனுமதிக்கின்றன, அவை குறைந்த-நிலை நிரலாக்க பணிகளுக்கு ஏற்றதாக அமைகின்றன. குறிப்புகள் பாதுகாப்பான மற்றும் நேரடியான தொடரியல், செயல்பாட்டு அளவுருக்கள் மற்றும் ஆபரேட்டர் ஓவர்லோடிங்கிற்கு ஏற்றது. ஒவ்வொன்றையும் எப்போது பயன்படுத்த வேண்டும் என்பதைப் புரிந்துகொள்வது திறமையான மற்றும் பயனுள்ள குறியீட்டை உறுதிசெய்கிறது, பயன்பாட்டின் எளிமையுடன் செயல்திறனை சமநிலைப்படுத்துகிறது.