வெற்றிட சுட்டி (வெற்றிட*) என்றால் என்ன?
ஒரு வெற்றிட சுட்டி, பொதுவான சுட்டி என்றும் அழைக்கப்படுகிறது, இது எந்தவொரு குறிப்பிட்ட தரவு வகையுடனும் தொடர்புபடுத்தப்படாத ஒரு சுட்டிக்காட்டி ஆகும், இது எந்த வகையான தரவையும் சுட்டிக்காட்டுவதற்கு ஏற்றது. வேறு வார்த்தைகளில் கூறுவதானால், ஏ வெற்றிட சுட்டி ஒரு முழு எண், ஒரு எழுத்து, ஒரு சரம் அல்லது வேறு எந்த தரவு வகையையும் சுட்டிக்காட்டலாம். இந்த நெகிழ்வுத்தன்மை வெற்றிட சுட்டிகளை C மற்றும் C++ நிரலாக்கத்தில் சக்திவாய்ந்த கருவியாக மாற்றுகிறது.
C மற்றும் C++ இல் வெற்றிட சுட்டியின் அறிவிப்பு
C மற்றும் C++ இல், தி வெற்றிட சுட்டி பின்வரும் தொடரியல் மூலம் அறிவிக்கப்படுகிறது:
வெற்றிடமானது * ptr ;
C மற்றும் C++ இல் வெற்றிட சுட்டிகளின் பயன்பாடு
வெற்றிட சுட்டிகள் ஒரு மாறியின் தரவு வகை தெரியாதபோது அல்லது இயக்க நேரத்தில் மாறுபடும் போது C இல் பெரும்பாலும் பயன்படுத்தப்படுகிறது. தரவை அதன் குறிப்பிட்ட தரவு வகையை அறியாமல் சேமித்து கையாள்வதற்கான பொதுவான வழியை அவை அனுமதிக்கின்றன. பல்வேறு வகையான தரவைக் கையாளக்கூடிய செயல்பாடுகள் அல்லது தரவு கட்டமைப்புகளைக் கையாளும் போது இது உதவியாக இருக்கும்.
ஒரு பொதுவான பயன்பாடு வெற்றிட சுட்டிகள் போன்ற நினைவக ஒதுக்கீடு செயல்பாடுகளில் உள்ளது malloc() எந்தவொரு தரவு வகையையும் சேமிக்கப் பயன்படும் நினைவகத் தொகுதிக்கு வெற்றிட சுட்டி புள்ளியை வழங்கும். ஒதுக்கப்பட்ட நினைவகத் தொகுதியில் சேமிக்கப்பட்ட தரவை அணுகவும் கையாளவும், புரோகிராமர் பின்னர் பொருத்தமான தரவு வகைக்கு வெற்றிட சுட்டியை அனுப்பலாம்.
C இல் உள்ள வெற்றிட சுட்டிகளின் மற்றொரு பயன்பாடு உள்ளது செயல்பாடு சுட்டிகள் , அவை ஒரு செயல்பாட்டின் நினைவக முகவரியைச் சேமிக்கும் மாறிகள். எந்தவொரு செயல்பாட்டின் நினைவக முகவரியையும் சேமிக்க வெற்றிட சுட்டிகள் பயன்படுத்தப்படலாம், அதன் திரும்பும் வகை அல்லது அளவுரு பட்டியலைப் பொருட்படுத்தாமல், செயல்பாடு சுட்டிக்காட்டி பயன்பாட்டில் அதிக நெகிழ்வுத்தன்மையை அனுமதிக்கிறது.
பயன்பாடு வெற்றிட சுட்டிகள் C++ இல் கிட்டத்தட்ட ஒரே மாதிரியாக உள்ளது, இருப்பினும், அவை வெவ்வேறு வகுப்புகளின் பொருள்களுக்கான பொதுவான இடைமுகத்தை உருவாக்கவும் பயன்படுத்தப்படலாம். இது பெரும்பாலும் மெய்நிகர் செயல்பாடுகளைப் பயன்படுத்துவதன் மூலம் அடையப்படுகிறது, இது வெவ்வேறு வகுப்புகளின் பொருள்களை ஒரே மாதிரியாக நடத்த அனுமதிக்கிறது. மேலும், C++ ஆனது C ஐ விட கடுமையான வகை சரிபார்ப்பை வழங்குகிறது, அதாவது பயன்படுத்துகிறது வெற்றிட சுட்டிகள் தவறாக அதிக பிழைகள் மற்றும் பிழைகள் ஏற்படலாம்.
C மற்றும் C++ இல் வெற்றிட சுட்டிகளைப் பயன்படுத்தும் போது கருத்தில் கொள்ள வேண்டிய புள்ளிகள்
பயன்படுத்தும் போது நீங்கள் கருத்தில் கொள்ள வேண்டிய சில புள்ளிகள் இங்கே உள்ளன வெற்றிட சுட்டிகள் C மற்றும் C++ இல்.
1: C இல், வெற்றிடம்* திரும்ப மதிப்பு மற்றும் செயல்பாட்டு அளவுருவாகப் பயன்படுத்தலாம் ஆனால் C++ இல் நீங்கள் குறிப்பிட்ட தரவு வகை சுட்டியைக் கொண்டிருக்க வேண்டும்.
உதாரணத்திற்கு:
C இல், குறியீடு கீழே கொடுக்கப்பட்டுள்ளது:
##உள்படுத்து
வெற்றிடமானது * சேர்_எண்கள் ( முழு எண்ணாக அ , முழு எண்ணாக பி ) {
முழு எண்ணாக * விளைவாக = malloc ( அளவு ( முழு எண்ணாக ) ) ;
* விளைவாக = அ + பி ;
திரும்ப ( வெற்றிடமானது * ) விளைவாக ;
}
வெற்றிடமானது அச்சு_முடிவு ( வெற்றிடமானது * விளைவாக ) {
முழு எண்ணாக * ptr = ( முழு எண்ணாக * ) விளைவாக ;
printf ( 'முடிவு: %d \n ' , * ptr ) ;
இலவசம் ( ptr ) ;
}
முழு எண்ணாக முக்கிய ( ) {
முழு எண்ணாக எண்1 = 5 , எண்2 = 7 ;
வெற்றிடமானது * விளைவாக = சேர்_எண்கள் ( எண்1 , எண்2 ) ;
அச்சு_முடிவு ( விளைவாக ) ;
திரும்ப 0 ;
}
மேலே உள்ள குறியீடு ஒரு செயல்பாட்டை வரையறுக்கிறது add_numbers() என்று திரும்புகிறது a வெற்றிடம்* இரண்டு முழு எண்களைச் சேர்ப்பதன் விளைவுக்கான சுட்டி வாதங்களாக அனுப்பப்பட்டது. செயல்பாடு அச்சு_முடிவு() ஒரு எடுக்கிறது void * சுட்டி மற்றும் முடிவை அச்சிடுகிறது. முக்கிய() செயல்பாட்டில், நாம் அழைக்கிறோம் add_numbers() மற்றும் விளைவாக அனுப்ப void * சுட்டி செய்ய அச்சு_முடிவு() அச்சிடுவதற்கு.
C++ இல், ஒரு குறிப்பிட்ட தரவு வகை தேவை.
#பெயர்வெளி std ஐப் பயன்படுத்துகிறது ;
வெற்றிடமானது printInt ( முழு எண்ணாக * ஒன்றில் ) {
கூட் << 'முழு எண்:' << * ஒன்றில் << endl ;
}
முழு எண்ணாக முக்கிய ( ) {
முழு எண்ணாக எக்ஸ் = 10 ;
முழு எண்ணாக * ptr = & எக்ஸ் ;
printInt ( ptr ) ;
திரும்ப 0 ;
}
2: C இல், நீங்கள் வெற்றிடத்தை மற்றொரு சுட்டிக்காட்டி வகைக்கு மாற்றலாம் மறைமுகமான மாற்றம். ஆனால் C++ இல் நீங்கள் பயன்படுத்த வேண்டும் வெளிப்படையான மாற்றம் மாற்றுவதற்கு வெற்றிட சுட்டி வேறு எந்த சுட்டி வகைக்கும்.
C மற்றும் C++ இரண்டிற்கும் இடையே உள்ள வேறுபாட்டை விளக்குவதற்கு ஒரு எளிய குறியீடு உதாரணம் இங்கே உள்ளது மறைமுகமாக மற்றும் வெளிப்படையான மாற்றம் இன் வெற்றிட சுட்டிகள் மற்ற சுட்டி வகைகளுக்கு:
C இல், பின்வரும் குறியீடு பயன்படுத்தப்படுகிறது:
#வெற்றிடமானது printChar ( வெற்றிடமானது * ch ) {
கரி c = * ( கரி * ) ch ;
printf ( '%c \n ' , c ) ;
}
முழு எண்ணாக முக்கிய ( ) {
கரி c = 'a' ;
வெற்றிடமானது * ptr = & c ;
printChar ( ptr ) ;
திரும்ப 0 ;
}
மேலே உள்ள குறியீடு ஒரு செயல்பாட்டை வரையறுக்கிறது printChar அது ஒரு வெற்றிட சுட்டியை அளவுருவாக எடுத்து அந்த நினைவக இடத்தில் சேமிக்கப்பட்ட எழுத்தை அச்சிடுகிறது. முக்கிய செயல்பாட்டில், ஒரு சார் மாறி c வரையறுக்கப்பட்டு அதன் முகவரி வெற்றிட சுட்டியில் சேமிக்கப்படுகிறது ptr தி printChar செயல்பாடு பின்னர் உடன் அழைக்கப்படுகிறது வெற்றிட சுட்டி 'ptr' ஒரு வாதமாக. வெற்றிடச் சுட்டிக்காட்டி வெளிப்படையாக ஒரு சார் சுட்டியாக மாற்றப்படுகிறது 'printChar' சேமிக்கப்பட்ட மதிப்பை அணுகவும் அச்சிடவும் செயல்பாடு 'சி' .
C++ இல், குறியீடு கீழே கொடுக்கப்பட்டுள்ளது:
#வெற்றிடமானது printInt ( வெற்றிடமானது * ஒன்றில் ) {
முழு எண்ணாக * ptr = நிலையான_வார்ப்பு < முழு எண்ணாக *> ( ஒன்றில் ) ;
வகுப்பு :: கூட் << * ptr << வகுப்பு :: endl ;
}
முழு எண்ணாக முக்கிய ( ) {
முழு எண்ணாக எக்ஸ் = 10 ;
வெற்றிடமானது * ptr = & எக்ஸ் ;
printInt ( ptr ) ;
திரும்ப 0 ;
}
மேலே உள்ள குறியீடு ஒரு செயல்பாட்டை வரையறுக்கிறது printInt இது ஒரு வெற்றிட சுட்டி எண்ணை ஒரு அளவுருவாக எடுத்து அதை ஒரு முழு எண் சுட்டிக்காட்டிக்கு அனுப்புகிறது நிலையான_காஸ்ட் ஆபரேட்டர் . செயல்பாடு பின்னர் வார்ப்பு சுட்டியால் சுட்டிக்காட்டப்பட்ட முழு எண்ணின் மதிப்பை அச்சிடுகிறது. முக்கிய செயல்பாட்டில், ஒரு முழு எண் மாறி x வரையறுக்கப்பட்டு அதன் முகவரி a இல் சேமிக்கப்படுகிறது வெற்றிட சுட்டி ptr, இது பின்னர் அனுப்பப்படுகிறது printInt செயல்பாடு. நிரலின் வெளியீடு x இன் மதிப்பு, இது 10 ஆகும்.
இறுதி எண்ணங்கள்
தி வெற்றிடமானது C மற்றும் C++ இல் உள்ள சுட்டிகள் அதன் குறிப்பிட்ட தரவு வகையை அறியாமல் தரவை கையாள ஒரு சக்திவாய்ந்த வழியை வழங்குகிறது. நினைவக ஒதுக்கீடு மற்றும் செயல்பாட்டு சுட்டிகள், அத்துடன் C++ இல் வெவ்வேறு வகுப்புகளின் பொருள்களுக்கான பொதுவான இடைமுகத்தை உருவாக்குவதற்கு அவை பயனுள்ளதாக இருக்கும். இருப்பினும், அவற்றின் பயன்பாட்டில் C மற்றும் C++ இடையே உள்ள வேறுபாடுகளைக் கருத்தில் கொள்வது அவசியம் வெற்றிட சுட்டிகள் , C++ இல் குறிப்பிட்ட தரவு வகைகளின் தேவை மற்றும் பிற சுட்டி வகைகளுக்கு வெற்றிட சுட்டிகளை அனுப்பும் போது வெளிப்படையான மாற்றத்திற்கான தேவை போன்றவை. இந்த புள்ளிகளை கவனமாகக் கருத்தில் கொள்வது மிகவும் திறமையான மற்றும் பயனுள்ள பயன்பாட்டிற்கு வழிவகுக்கும் வெற்றிட சுட்டிகள் நிரலாக்கத்தில்.