தொகுதி பாடங்கள் (2/2)
சுட்டிகள்
சுட்டிகள் C++ இன் மிகவும் சக்திவாய்ந்த மற்றும் தனித்துவமான அம்சங்களில் ஒன்றாகும். அவை கணினியின் இயற்பியல் நினைவகத்தை நேரடியாக அணுக உங்களை அனுமதிக்கின்றன, திறமையான வள மேலாண்மை மற்றும் உயர் செயல்திறனை செயல்படுத்துகின்றன.
1. நினைவகம் மற்றும் முகவரி என்றால் என்ன?
உங்கள் நிரலில் நீங்கள் அறிவிக்கும் ஒவ்வொரு மாறியும் RAM நினைவகத்தின் ஒரு கலத்தில் சேமிக்கப்படும். ஒவ்வொரு கலத்திற்கும் தனித்துவமான நினைவக முகவரி (பொதுவாக ஹெக்ஸாடெசிமல் வடிவத்தில் வெளிப்படுத்தப்படுகிறது, எ.கா., 0x7ffee3bf87ac).
C++ ஆனது ஆபரேட்டரின் முகவரி & ஐப் பயன்படுத்தி எந்த மாறியின் நினைவக முகவரியையும் பெற அனுமதிக்கிறது:
int x = 42;
std::cout << &x; // Prints the memory address of x (e.g., 0x7ffee3bf87ac)2. ஒரு சுட்டியின் வரையறை
சுட்டி என்பது ஒரு சிறப்பு மாறியாகும், இது மற்றொரு மாறியின் நினைவக முகவரியை அதன் மதிப்பாக சேமிக்கிறது.
தொடரியல் தரவு வகைக்குப் பிறகு * என்ற நட்சத்திரத்தைப் பயன்படுத்த வேண்டும்:
int x = 42;
int* ptr = &x; // ptr is a pointer to an integer that contains the address of x3. Dereference ஆபரேட்டர் (*)
ஒரு சுட்டி சுட்டிக்காட்டும் முகவரியில் சேமிக்கப்பட்ட மதிப்பை அணுக அல்லது மாற்ற, நாங்கள் *_ dereference ஆபரேட்டரைப் பயன்படுத்துகிறோம்_
int x = 42;
int* ptr = &x;
std::cout << *ptr; // Prints 42 (the value ptr points to)
*ptr = 100; // Modifies the value of x through the pointer
std::cout << x; // Now prints 100!4. பூஜ்ய சுட்டிகள்: nullptr
எந்தவொரு செல்லுபடியான முகவரியையும் சுட்டிக்காட்டாத ஒரு சுட்டியானது nullptr முக்கிய சொல்லைக் கொண்டு துவக்கப்பட வேண்டும் (C++11 இல் அறிமுகப்படுத்தப்பட்டது):
int* ptr = nullptr; // Safe null pointerநீங்களே முயற்சி செய்து பாருங்கள்
முக்கியமாக, ஒரு முழு எண் மாறி மதிப்பு 42 க்கு துவக்கப்பட்டுள்ளது. மதிப்பின் முகவரியைக் குறிக்கும் முழு எண் ptr க்கு ஒரு சுட்டியை அறிவிக்கவும். மதிப்பின் மதிப்பை 100 ஆக அமைக்க ptr இன் dereferencing ஐப் பயன்படுத்தவும், இறுதியாக std::cout ஐப் பயன்படுத்தி மதிப்பை அச்சிடவும்.
குறிப்பைக் காட்டு
சுட்டிக்காட்டியை `int* ptr = &value;`என அறிவிக்கவும்,`*ptr = 100;`ஐக் குறிப்பதன் மூலம் மதிப்பை மாற்றவும், மேலும்`std::cout << value;` ஐ அச்சிடவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
ஒரு முழு எண்ணுக்கு (int* ptr) ஒரு சுட்டியை ஏற்று, அது சுட்டிக்காட்டும் மதிப்பை 2 ஆல் பெருக்கும் இரட்டை மதிப்பு செயல்பாட்டை வரையறுக்கவும் (சுட்டி பூஜ்யமாக இல்லாவிட்டால்). முக்கியமாக, இரட்டை மதிப்பு மாறி எண்ணின் முகவரியைக் கடந்து அதை அச்சிடவும்.
குறிப்பைக் காட்டு
செயல்பாடு `int* ptr`ஐ ஏற்க வேண்டும். உள்ளே,`*ptr = (_ptr) _ 2`ஐப் பயன்படுத்தவும். முக்கியமாக அதை`இரட்டை மதிப்பு(&num);` என அழைக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
கொடுக்கப்பட்ட குறியீட்டைப் பொறுத்தவரை, எந்த வெளிப்பாடு உங்களை நேரடியாக a இன் மதிப்பை மாற்ற அனுமதிக்கிறது, அதை 10 ஆக அமைக்கிறது?
int a = 5;
int* p = &a;
// quale istruzione assegna 10 ad a?