கட்டமைப்புக்கும் ஒன்றியத்திற்கும் இடையிலான வேறுபாடு

நூலாசிரியர்: Laura McKinney
உருவாக்கிய தேதி: 1 ஏப்ரல் 2021
புதுப்பிப்பு தேதி: 17 மே 2024
Anonim
Acids and Bases_Part-3
காணொளி: Acids and Bases_Part-3

உள்ளடக்கம்


தனிப்பயன் தரவை உருவாக்க சி மொழி வழங்கிய ஐந்து வழிகளையும் சி ++ அனுமதிக்கிறது. அந்த ஐந்து வழிகள் ‘கட்டமைப்பு’, ‘பிட்-புலம்’, ‘தொழிற்சங்கம்’, ‘கணக்கீடு’, ‘தட்டச்சு செய்தல்’. கீழேயுள்ள கட்டுரையில், கட்டமைப்புக்கும் தொழிற்சங்கத்திற்கும் உள்ள வித்தியாசத்தை நாம் படிக்கப்போகிறோம். கட்டமைப்பு மற்றும் தொழிற்சங்கம் இரண்டும் எந்தவொரு “வகையின்” தரவையும் வைத்திருக்கக்கூடிய கொள்கலன் தரவு வகைகளாகும். கட்டமைப்பு மற்றும் தொழிற்சங்கத்தை வேறுபடுத்துகின்ற ஒரு முக்கிய வேறுபாடு என்னவென்றால், இந்த அமைப்பு அதன் ஒவ்வொரு உறுப்பினருக்கும் தனித்தனி நினைவக இருப்பிடத்தைக் கொண்டுள்ளது, அதேசமயம் ஒரு தொழிற்சங்கத்தின் உறுப்பினர்கள் ஒரே நினைவக இருப்பிடத்தைப் பகிர்ந்து கொள்கிறார்கள்.

ஒப்பீட்டு விளக்கப்படத்துடன், கட்டமைப்புக்கும் தொழிற்சங்கத்திற்கும் உள்ள வித்தியாசத்தைப் புரிந்துகொள்வோம்.

  1. ஒப்பீட்டு விளக்கப்படம்
  2. வரையறை
  3. முக்கிய வேறுபாடுகள்
  4. ஒற்றுமைகள்
  5. முடிவுரை

ஒப்பீட்டு விளக்கப்படம்

ஒப்பீட்டின் அடிப்படைஅமைப்புயூனியன்
அடிப்படைகட்டமைப்பின் ஒவ்வொரு உறுப்பினருக்கும் தனி நினைவக இடம் ஒதுக்கப்பட்டுள்ளது.தொழிற்சங்கத்தின் அனைத்து உறுப்பினர்களும் ஒரே நினைவக இடத்தைப் பகிர்ந்து கொள்கிறார்கள்.
பிரகடனம்struct struct_name {
உறுப்பு 1 வகை;
உறுப்பு 2 வகை;
.
.
} variable1, variable2, ...;
தொழிற்சங்க u_name {
உறுப்பு 1 வகை;
உறுப்பு 2 வகை;
.
.
} variable1, variable2, ...;
முக்கிய, structதொழிற்சங்க
அளவுகட்டமைப்பின் அளவு = அனைத்து தரவு உறுப்பினர்களின் அளவு.யூனியன் அளவு = மிகப்பெரிய உறுப்பினர்களின் அளவு.
கடை மதிப்புஅனைத்து உறுப்பினர்களுக்கும் தனித்துவமான மதிப்புகளை சேமிக்கிறது.அனைத்து உறுப்பினர்களுக்கும் ஒரே மதிப்பை சேமிக்கிறது.
ஒரு நேரத்தில்ஒரு கட்டமைப்பானது கட்டமைப்பின் பல்வேறு உறுப்பினர்களின் பல மதிப்புகளை சேமிக்கிறது.ஒரு சங்கம் அனைத்து உறுப்பினர்களுக்கும் ஒரே நேரத்தில் ஒரு மதிப்பை சேமிக்கிறது.
பார்க்கும் வழிஒவ்வொரு நினைவக இருப்பிடத்தையும் காண ஒற்றை வழியை வழங்கவும்.ஒரே நினைவக இருப்பிடத்தைக் காண பல வழிகளை வழங்கவும்.
அநாமதேய அம்சம்அநாமதேய அம்சம் இல்லை.அநாமதேய தொழிற்சங்கத்தை அறிவிக்க முடியும்.

கட்டமைப்பின் வரையறை

கட்டமைப்பு என்பது வெவ்வேறு தரவு வகைகளின் மாறிகளின் தொகுப்பாகும், அவை பொதுவான பெயரால் குறிப்பிடப்படுகின்றன. ஒரு கட்டமைப்பில் உள்ள மாறிகள் "உறுப்பினர்கள்" என்று அழைக்கப்படுகின்றன. இயல்பாக, ஒரு கட்டமைப்பின் அனைத்து உறுப்பினர்களும் “பொது”. நீங்கள் ஒரு கட்டமைப்பை அறிவிக்கும்போது, ​​நீங்கள் ஒரு வார்ப்புருவை உருவாக்குகிறீர்கள், இது கட்டமைப்பு பொருள்களை உருவாக்க பயன்படுகிறது, தரவு உறுப்பினர்கள் மற்றும் உறுப்பினர் செயல்பாடுகளின் ஒரே அமைப்பைப் பகிர்ந்து கொள்கிறது. கட்டமைப்பின் அறிவிப்பு எப்போதுமே "struct" என்ற முக்கிய வார்த்தையால் முன்னதாகவே இருக்கும், இது ஒரு கட்டமைப்பு அறிவிக்கப்பட்டுள்ளதாக தொகுப்பாளரிடம் கூறுகிறது. ஒரு எடுத்துக்காட்டு எடுத்துக்கொள்வோம்.


ஒரு எடுத்துக்காட்டு எடுத்துக்கொள்வோம்.

struct பணியாளர் {சரம் பெயர்; சரம் நிறுவனத்தின் பெயர்; சரம் நகரம்; } Emp1, emp2;

இங்கே, ஊழியர்களின் தகவல்களை சேமிப்பதற்கான ஒரு கட்டமைப்பை நாங்கள் அறிவிக்கிறோம். கட்டமைப்பு அறிவிப்பு ஒரு அறிக்கை மற்றும் சி ++ இல் அறிக்கை அரைக்காற்புள்ளியால் நிறுத்தப்படுவதால், அறிவிப்பு ஒரு அரைப்புள்ளியால் நிறுத்தப்படுகிறது.

ஒரு கட்டமைப்பிற்கு கொடுக்கப்பட்ட பெயர் ஒரு “வகையை” வரையறுக்கிறது (மேலே எடுத்துக்காட்டில் கட்டமைப்பின் பெயர் “பணியாளர்”). இந்த வகைகளின் மாறிகள் உருவாக்கப்படலாம், மேலே குறிப்பிட்டபடி, “பணியாளர்” வகை இரண்டு மாறி ’emp1 ′ மற்றும்’ emp2 type ஐ உருவாக்கியுள்ளோம். மேலே உள்ள எடுத்துக்காட்டில், அறிவிப்புக்குப் பிறகு ஒரு ‘கட்டமைப்பு’ மாறியை உருவாக்கினோம்; மாற்றாக, அதை தனித்தனியாக உருவாக்க முடியும்.

struct பணியாளர் emp1, emp2; // struct என்ற கட்டாயச்சொல் கட்டாயமில்லை.

ஒரு கட்டமைப்பு மாறியின் உறுப்பினர்களை துவக்கலாம் அல்லது புள்ளி (.) ஆபரேட்டரைப் பயன்படுத்தி அணுகலாம்.

emp1.name = "அசோக்";

ஒரு கட்டமைப்பு மாறியில் உள்ள தகவல்களைப் பின்பற்றும் அதே வகையின் மற்றொரு கட்டமைப்பு மாறிக்கு ஒதுக்கலாம்.


emp1.name = "அசோக்"; emp1.company_name = "டெக்பிக்ஸ்"; emp1.city = "தில்லி"; emp2 = emp1; // emp1 இன் உறுப்பினரின் மதிப்புகளை emp2 க்கு ஒதுக்குதல். C OUT இன் <

இங்கே, ’emp1’ என்ற கட்டமைப்பு மாறியை ’emp2 assigned க்கு ஒதுக்கினோம், எனவே’ emp1 its அதன் உறுப்பினர்களின் அனைத்து மதிப்பையும் ‘epm2’ இன் தொடர்புடைய உறுப்பினருக்கு நகலெடுக்கிறது.

கட்டமைப்பு மாறியின் உறுப்பினர் செயல்பாட்டுக்கு அனுப்பப்படலாம்.

funct (emp1.city);

முழு கட்டமைப்பு மாறுபாடும் செயல்பாட்டுக்கு அனுப்பப்படலாம், இரண்டு முறைகளும் மதிப்பால் அழைக்கப்படுகின்றன மற்றும் குறிப்பு மூலம் அழைக்கப்படுகின்றன.

funt (emp1); // அழைப்பு மூலம் மதிப்பு முறை மூலம் அழைப்பு செயல்பாடு. . . void funct (struct பணியாளர் emp) emp // emp1 உறுப்பினர்களின் மதிப்புகளைப் பெறுதல். C OUT இன் <

இங்கே, கட்டமைப்பு மாறியின் உறுப்பினரின் மதிப்பிற்கான மாற்றம் செயல்பாட்டுக்கு வெளியே பிரதிபலிக்காது, ஏனெனில் ஒரு மாறி மதிப்பு முறை மூலம் அழைப்பால் அனுப்பப்படுகிறது. இப்போது குறிப்பு முறையால் அழைப்பதன் மூலம் அதையே செய்வோம்.

funt (& emp1); // அழைப்பு மூலம் அழைப்பு மூலம் அழைப்பு செயல்பாடு. . . void funct (struct பணியாளர் * emp) {// emp1 இன் முகவரி பெறுதல். emp-> நகரம் = "நூர்"; // கட்டமைப்பு மாறி emp1 இன் உறுப்பினர் (நகரம்) மதிப்பை மாற்றவும். . }

இங்கே, கட்டமைப்பு மாறி குறிப்பு மூலம் அனுப்பப்படுகிறது, எனவே கட்டமைப்பு மாறியின் உறுப்பினர்களின் மதிப்புக்கு மாற்றமும் செயல்பாட்டிற்கு வெளியே பிரதிபலிக்கிறது.

srtuct பணியாளர் * emp; // வகை ஊழியரின் கட்டமைப்பு சுட்டிக்காட்டி நீக்குதல். EMP = & emp1; // எம்பி 1 இன் முகவரியை சுட்டிக்காட்டிக்கு ஒதுக்குதல். emp-> நகரம் // எம்பி 1 இன் உறுப்பு நகரத்தை அணுகும் சுட்டிக்காட்டி.

கட்டமைப்பிற்கான சுட்டிக்காட்டி உருவாக்கப்படலாம்; இது கட்டமைப்பு மாறியின் முகவரியைக் கொண்டுள்ளது.

கட்டமைப்பில், வரையறை இல்லாதபோது, ​​எந்தவொரு பயனரும் வரையறுக்கப்பட்ட கட்டமைப்பாளர் அல்லது மெய்நிகர் செயல்பாடுகள் அல்லது அடிப்படை வகுப்பு அல்லது தனியார் அல்லது பாதுகாக்கப்பட்ட புலம் ஆகியவற்றைக் கொண்டிருக்கும்போது கட்டமைப்பில் மொத்த துவக்கம் அனுமதிக்கப்படுகிறது.

int main () {struct epm3 = {"அனில்", "டெக்பிக்ஸ்", "நூர்"}; Employee // பணியாளரின் கட்டமைப்பில் சாத்தியமானது மேலே குறிப்பிடப்பட்ட விஷயங்கள் எதுவும் இல்லை.

ஒன்றியத்தின் வரையறை

ஒரு தொழிற்சங்கம் என்பது ஒரு ஒற்றை யூனியன் வகையின் கீழ் அறிவிக்கப்பட்ட இரண்டு அல்லது அதற்கு மேற்பட்ட வெவ்வேறு வகை மாறிகளால் பகிரப்பட்ட நினைவக இருப்பிடமாகும். ஒரு தொழிற்சங்கத்தை அறிவிக்கப் பயன்படுத்தப்படும் முக்கிய சொல் “தொழிற்சங்கம்”. சி ++ இல், ஒரு தொழிற்சங்கம் உறுப்பினர் செயல்பாடு மற்றும் மாறிகள் இரண்டையும் கொண்டிருக்கலாம். முன்னிருப்பாக, தொழிற்சங்கத்தின் அனைத்து உறுப்பினர்களும் “பொது”. "தொழிற்சங்கத்தின்" பிரகடனம் கட்டமைப்பின் அறிவிப்புக்கு ஒத்ததாகும்.

யூனியன் u_type {int x, char c; மிதவை எஃப்; } u1, u2;

இங்கே, u_type என்ற பெயரில் ஒரு தொழிற்சங்கத்தை அறிவித்தோம். U_type இன் உறுப்பினர்கள் முழு எண் வகையின் ‘x’, எழுத்து வகையின் ‘c’ மற்றும் மிதவை வகையின் ‘f’. ஒரு தொழிற்சங்கத்தின் அறிவிப்புக்குப் பிறகு, ‘u_type’ வகையின் தொழிற்சங்க மாறிகள் ‘u1’ மற்றும் ‘u2’ ஐ உருவாக்கியுள்ளோம். தொழிற்சங்கத்தின் அறிவிப்பிலிருந்து தொழிற்சங்க மாறியை நாங்கள் தனித்தனியாக அறிவிக்க முடியும்.

int main () {தொழிற்சங்க u_type u1, u2; // சி ++ இல் முக்கிய தொழிற்சங்கம் கட்டாயமில்லை. }

தொழிற்சங்க உறுப்பினர்களை அணுகுவதை புள்ளி (.) ஆபரேட்டரைப் பயன்படுத்தி செய்ய முடியும், இது தொழிற்சங்க மாறிக்கு முன்னால் மற்றும் அந்த மாறியின் உறுப்பினரைப் பின்பற்றுகிறது.

u1.x = 10;

கட்டமைப்புகளைப் போலவே, ஒரு தொழிற்சங்கத்தில் மொத்த துவக்கம் சாத்தியமில்லை. தொழிற்சங்கம் அதன் அனைத்து உறுப்பினர்களுக்கும் ஒரே நேரத்தில் ஒரே நினைவக இருப்பிடத்தைப் பகிர்ந்துகொள்வது எங்களுக்குத் தெரியும், ஒரே ஒரு மாறி மட்டுமே துவக்கப்படுகிறது மற்றும் அனைத்து மாறிகளும் தானாகவே துவக்கப்பட்ட மதிப்புடன் புதுப்பிக்கப்படும்.

u1.x = 10; C OUT இன் <

‘U1’ இன் எந்த உறுப்பினரின் மதிப்பையும் மாற்ற முயற்சித்தால். மற்ற உறுப்பினர் தானாகவே அந்த மதிப்புக்கு புதுப்பிக்கப்படுவார்.

u1.c = 65; C OUT இன் <

தொழிற்சங்கத்திற்கு ஒதுக்கப்பட்ட இடம் தொழிற்சங்கத்தின் மிகப்பெரிய உறுப்பினரின் அளவிற்கு சமம். ‘கரி’ க்கு ஒதுக்கப்பட்ட பைட் 1 பைட்டாகவும், ‘இன்ட்’ 4 பைட்டாகவும், ‘ஃப்ளோட்’ 4 பைட்டுகளாகவும் இருப்பதால், மிகப்பெரிய அளவு 4 பைட் ஆகும். எனவே, ‘u1’ மற்றும் ‘u2’ க்கு ஒதுக்கப்பட்ட நினைவகம் 4 பைட் ஆகும்.

int main () {int size_1 = sizeof (u1); // 4 int size_2 = sizeof (u2); // 4

தொழிற்சங்கத்திற்கான சுட்டிக்காட்டி கட்டமைப்பைப் போலவே உருவாக்கப்படலாம். சுட்டிக்காட்டி தொழிற்சங்கத்தின் முகவரியை வைத்திருக்கிறது.

தொழிற்சங்க u_type * un; ஐ.நா. = & U1; C OUT இன் <எக்ஸ்; // 10

கட்டமைப்பைப் போலவே, தொழிற்சங்கமும் இரண்டு முறைகளாலும் செயல்பாடுகளுக்கு அனுப்பப்படலாம், அதாவது மதிப்பு மூலம் அழைப்பு மற்றும் குறிப்பு மூலம் அழைப்பு.

funct (U1); // அழைப்பு மூலம் மதிப்பு முறை மூலம் அழைப்பு செயல்பாடு. . . void funct (யூனியன் u_type un) {// u1 இன் உறுப்பினரின் மதிப்பைப் பெறுதல். C OUT இன் <

இப்போது, ​​அழைப்பு மூலம் குறிப்பு முறையைப் பயன்படுத்தி செயல்பாட்டை அழைப்போம்.

funct (& U1); // அழைப்பு மூலம் அழைப்பு செயல்பாடு. . . void funct (யூனியன் u_type un) {// u1 இன் முகவரியைப் பெறுதல். un-> x = 20. }

சி ++ இல் அநாமதேய யூனியன் என்று அழைக்கப்படும் ஒரு சிறப்பு வகை தொழிற்சங்கம் உள்ளது ”. அநாமதேய தொழிற்சங்கத்திற்கு வகை பெயர் இருக்க முடியாது, அத்தகைய தொழிற்சங்கத்தின் எந்த மாறுபாடும் உருவாக்க முடியாது. தொகுப்பாளரிடம் அதன் உறுப்பினர் மாறிகள் ஒரே இருப்பிடத்தைப் பகிர்ந்து கொள்ள வேண்டும் என்று சொல்வது மட்டுமே. அநாமதேய ஒன்றியத்தின் மாறி சாதாரண புள்ளி (.) ஆபரேட்டர் இல்லாமல் குறிப்பிடப்படலாம்.

int main () {Union {// வகை பெயருடன் அநாமதேய தொழிற்சங்கத்தை வரையறுக்கவும். int x, char c; மிதவை எஃப்; }; எக்ஸ் = 10; // அவுட் டாட் ஆபரேட்டர் க out ட் உடன் யூனியன் மாறியைக் குறிப்பிடுகிறது <

அநாமதேய தொழிற்சங்கத்தில் உறுப்பினர் செயல்பாடு எதுவும் அனுமதிக்கப்படவில்லை, அதில் தனிப்பட்ட அல்லது பாதுகாக்கப்பட்ட தரவு இருக்க முடியாது, மேலும் உலகளாவிய அநாமதேய தொழிற்சங்கத்தை ‘நிலையான’ என்று குறிப்பிட வேண்டும்.

சாதாரண தொழிற்சங்க அறிவிப்புக்கு நினைவில் கொள்ள வேண்டிய புள்ளிகள்.

  • ஒரு தொழிற்சங்கத்தின் வரையறை கட்டமைப்பாளர் மற்றும் அழிப்பாளரையும் கொண்டிருக்கலாம்.
  • ஒரே நினைவக இருப்பிடத்தைக் காண பல வழிகளை தொழிற்சங்கம் வழங்குகிறது.
  • தொழிற்சங்கம் எந்த வகையிலும் வர்க்கத்தை பெற முடியாது.
  • தொழிற்சங்கம் ஒரு அடிப்படை வர்க்கமாக இருக்க முடியாது.
  • தொழிற்சங்கத்திற்கு மெய்நிகர் உறுப்பினர் செயல்பாடு இருக்க முடியாது.
  • தொழிற்சங்கத்திற்கு நிலையான மாறி இருக்க முடியாது.
  1. அமைப்பு வெவ்வேறு உறுப்பினர்களுக்கு வெவ்வேறு நினைவக இருப்பிடத்தைப் பயன்படுத்துகிறது. எனவே, அனைத்து உறுப்பினர்களுக்கும் தனித்துவமான மதிப்பை ஒதுக்க முடியும். ஆனால், அனைத்து உறுப்பினர்களுக்கும் ஒரே நினைவக இடத்தை தொழிற்சங்கம் ஒதுக்குகிறது. எனவே, அனைத்து உறுப்பினர்களுக்கும் ஒரு மதிப்பு ஒதுக்கப்படலாம்.
  2. இந்த அமைப்பு அனைத்து உறுப்பினர்களுக்கும் வெவ்வேறு நினைவக இருப்பிடத்தைக் கொண்டுள்ளது; எனவே, இது ஒரு நேரத்தில் பல மதிப்புகளைக் கொண்டிருக்கலாம், மேலும் அனைத்து உறுப்பினர்களுக்கும் ஒரே நினைவக இருப்பிடத்தை தொழிற்சங்கம் பகிர்ந்துகொள்வது எங்களுக்குத் தெரியும், எனவே இது ஒரு நேரத்தில் ஒரு மதிப்பை சேமிக்க முடியும்.
  3. பொதுவாக, கட்டமைப்பின் மொத்த அளவு தொழிற்சங்கத்தின் மொத்த அளவை விடப் பெரியது, ஏனெனில் ஒரு கட்டமைப்பின் அளவு என்பது கட்டமைப்புகளின் அனைத்து உறுப்பினர்களின் அளவின் கூட்டுத்தொகையாகும் மற்றும் தொழிற்சங்கத்தின் அளவு உறுப்பினரின் அளவு மிகப்பெரிய வகை.
  4. கட்டமைப்பு ஒவ்வொரு இருப்பிடத்தின் ஒற்றைக் காட்சியை வழங்குகிறது, அதே நேரத்தில் தொழிற்சங்கம் ஒரு இருப்பிடத்தின் பல பார்வைகளை வழங்குகிறது.
  5. நீங்கள் ஒரு அநாமதேய தொழிற்சங்கத்தை அறிவிக்க முடியும், ஆனால் அநாமதேய அமைப்பு அல்ல.

ஒற்றுமைகள்:

  • கட்டமைப்பு மற்றும் தொழிற்சங்கம் இரண்டும் தன்னை அறிவிக்க ஒரே வழி, மாறிகள் உருவாக்குதல் மற்றும் மாறிகளின் உறுப்பினர்களை அணுகுவதற்கான ஒரே வழி.
  • கட்டமைப்பு மற்றும் தொழிற்சங்கம் இரண்டையும் ஒரு செயல்பாடு மூலம் மதிப்பு மற்றும் அழைப்பு மூலம் அழைக்கலாம்.
  • கட்டமைப்பு மற்றும் தொழிற்சங்கம் இரண்டும் கொள்கலன் தரவு வகை மற்றும் பிற தரவு அமைப்பு, தொழிற்சங்கம், அவற்றின் உறுப்பினர்களாக வரிசை உள்ளிட்ட எந்த தரவு வகையின் பொருளையும் கொண்டுள்ளது.

முடிவுரை:

இரண்டுமே, கட்டமைப்பு மற்றும் தொழிற்சங்கம் என்பது பல்வேறு வகையான உறுப்பினர்களைக் கொண்ட கொள்கலன் தரவு வகை. ஆனால் அனைத்து உறுப்பினர்களுக்கும் தனித்துவமான மதிப்பை ஒரு தனித்துவமான நினைவக இடத்தில் சேமிக்க வேண்டியிருக்கும் போது கட்டமைப்புகள் பயன்படுத்தப்படுகின்றன. வகை மாற்றம் தேவைப்படும்போது தொழிற்சங்கங்கள் பயன்படுத்தப்படுகின்றன.