Հիմնական տարբերություն – Կառուցվածքն ընդդեմ միության C-ում
Զանգվածը C լեզվով աջակցվող տվյալներ է: Զանգվածը կարող է օգտագործվել նույն տեսակի տվյալների տարրերը պահելու համար: Եթե կա հայտարարություն որպես int նշաններ [10]; ապա նշանները զանգված են, որը կարող է պահել տասը նշան, և բոլորն էլ ամբողջ թվեր են: Երբեմն պահանջվում է պահպանել տարբեր տեսակի տվյալների տարրեր նույն հիշողության վայրում: Օրինակ, աշխատողը կարող է ունենալ աշխատողի ID, անունը, բաժինը, տարիքը և այլն: Դրանք տարբեր տեսակի տվյալների են: Հետևաբար, անհրաժեշտ է ունենալ տվյալների տարբեր տարրեր որպես մեկ միավոր պահելու մեթոդ: Կառուցվածքները և միությունները C-ում օգտագործվում են տարբեր տեսակի տվյալների տարրերը նույն հիշողության վայրում պահելու համար:Կառուցվածքը և միավորումը նման են, բայց դրանք հիմնականում տարբերվում են հիշողության բաշխման պատճառով: Կառուցվածքային փոփոխականը պահելու համար անհրաժեշտ հիշողությունը բոլոր անդամների հիշողության չափի գումարումն է: Միության փոփոխականը պահելու համար պահանջվող հիշողությունը միավորման ամենամեծ տարրի համար պահանջվող հիշողությունն է: Դա է հիմնական տարբերությունը կառուցվածքի և միավորման միջև C-ում: Այս հոդվածը քննարկում է կառուցվածքի և միության միջև տարբերությունը C-ում:
Ի՞նչ է կառուցվածքը C-ում:
Կառուցվածքը C-ում օգտագործողի կողմից սահմանված տվյալների տեսակ է: Այն օգնում է միավորել տարբեր տեսակի տվյալների տարրերը: Կառուցվածքը կարող է ներկայացնել գրառումներ: Ուսանողը կարող է ունենալ student_id, student_name և այլն: Յուրաքանչյուր փոփոխական առանձին պահելու փոխարեն, այս բոլոր տարբեր տվյալների տարրերը կարող են կոմպակտ լինել մեկ միավորի մեջ՝ օգտագործելով կառուցվածքը: Այն սահմանվում է օգտագործելով «struct» հիմնաբառը: Կառուցվածքում նրա բոլոր անդամները կարող են մուտք գործել ցանկացած ժամանակ: Հետևյալը ստեղծում է ստացված տվյալների տիպի struct Student:
struct Ուսանող {
instudent_id;
char student_name[20];
};
Վերոնշյալ կառուցվածքի համար փոփոխականները կարող են հայտարարվել հետևյալ կերպ:
struct Ուսանող ուսանող1, ուսանող2, ուսանող3;
Կառույցի անդամներին մուտք գործելու երկու եղանակ կա. Դա՝ օգտագործելով անդամ օպերատորը (.) և կառուցվածքի ցուցիչի օպերատորը (->): Անդամներին կարելի է մուտք գործել՝ օգտագործելով structure_variable_name: անդամի անունը. Եթե ծրագրավորողը ցանկանում է մուտք գործել աշակերտ 2-ի անունը, ապա նա կարող է հայտարարությունը գրել որպես printf(student2.student_namename);
Վերաբերեք ստորև ներկայացված ծրագրի կառուցվածքին:
Նկար 01. C ծրագիր կառուցվածքներով
Ըստ վերոնշյալ ծրագրի՝ Ուսանողը կառույց է։Այն պարունակում է student_id և student_name: Հիմնական ծրագրում հայտարարված է կառուցվածքի տիպի երկու փոփոխական։ Դրանք կոչվում են student1 և student2: Student1-ի id-ին վերագրվում է 1 արժեքը՝ օգտագործելով անդամ օպերատորը՝ student1.student_id=1: «Անն» անունը լարային է: Հետևաբար, այն պատճենվում է student_name անդամին, օգտագործելով strcpy ֆունկցիան: ID-ն և անունը նշանակվում են student2-ին նույն ձևով: Վերջապես, այդ արժեքները տպագրվում են անդամ օպերատորի միջոցով:
Կառուցվածքային փոփոխականը պահելու համար պահանջվող հիշողության քանակը բոլոր անդամների հիշողության չափի գումարն է: Student_id-ը պարունակում է 4 բայթ, իսկ student_name-ը պարունակում է 20 բայթ (յուրաքանչյուրը մեկ բայթ նիշի համար): Ընդհանուր 24 բայթը կառուցվածքի կողմից պահանջվող հիշողության չափի գումարն է։
Ի՞նչ է միությունը C-ում:
Միությունը օգտատիրոջ կողմից սահմանված տվյալների տեսակ է C-ում: Այն օգնում է տվյալների տարբեր տեսակներ պահել նույն հիշողության վայրում: Գիրքը կարող է ունենալ այնպիսի հատկություններ, ինչպիսիք են book_name, price և այլն: Նրանցից յուրաքանչյուրի համար փոփոխականներ ստեղծելու փոխարեն, միությունը կարող է օգտագործվել տվյալների բոլոր տարբեր տեսակները միավորելու համար մեկ միավորի մեջ՝ օգտագործելով միություն:Այն սահմանվում է օգտագործելով «միություն» հիմնաբառը: Հետևյալը ստեղծում է ստացված տվյալների միավորման գիրք:
unionBook{
char name[20];
կրկնակի գին;
};
Վերոնշյալ միավորման համար փոփոխականները կարող են հայտարարվել հետևյալ կերպ։
միություն Գիրք գիրք1, գիրք2;
Միության անդամներին մուտք գործելու երկու եղանակ կա. Դա՝ օգտագործելով անդամ օպերատորը (.) և կառուցվածքի ցուցիչի օպերատորը (->): Անդամներին կարելի է մուտք գործել՝ օգտագործելով union_variable_name: անդամի անունը. Եթե ծրագրավորողը ցանկանում է մուտք գործել գրքի անվանումը1, ապա նա կարող է հայտարարությունը գրել որպես printf(book1.name);
Նշեք ստորև ներկայացված ծրագիրը միության հետ:
Նկար 02. C ծրագիր՝ օգտագործելով union
Ըստ վերոնշյալ ծրագրի՝ Գիրքը միություն է։ Book1-ը միության տիպի փոփոխական է: Անունը և գինը նշանակված են արժեքներ: Միությունում նրա անդամներից միայն մեկին կարելի է մուտք գործել միաժամանակ, իսկ մնացած բոլոր անդամները կունենան աղբի արժեքներ: ID-ի արժեքը ճիշտ չի տպվում, բայց գնի արժեքը ճիշտ է տպվում:
Նկար 03. Փոփոխված C ծրագիր միությամբ
Ըստ վերոնշյալ ծրագրի՝ Գիրքը միություն է։ Book1-ը և book2-ը միության տիպի փոփոխականներ են: Սկզբում նշանակվում է գրքի 1 անվան արժեքը և այն տպվում է: Այնուհետև նշանակվում է book2 անվան արժեքը և այն տպվում է: Բոլոր անդամները ճիշտ են տպում, քանի որ միաժամանակ օգտագործվում է մեկ անդամ: Միությունը պահելու համար պահանջվող հիշողությունը միավորման ամենամեծ տարրի համար պահանջվող հիշողությունն է:Վերոնշյալ ծրագրում անվան փոփոխականը 20 բայթ է։ Այն ավելի մեծ է, քան գինը: Այսպիսով, միության համար հիշողության հատկացումը 20 բայթ է։
Որո՞նք են նմանությունները կառուցվածքի և միության միջև C-ում:
- Եվ Structure-ը և Union-ը C-ում օգտագործողի կողմից սահմանված տվյալների տեսակներ են:
- Եվ Structure-ը և Union-ը C-ում կարող են օգտագործվել տվյալների տարբեր տեսակներ պահելու համար նույն հիշողության վայրում:
Ո՞րն է տարբերությունը կառուցվածքի և միության միջև C-ում:
Կառուցվածքն ընդդեմ միության C-ում |
|
Structure-ը C լեզվով օգտագործողի կողմից սահմանված տվյալների տեսակ է, որը թույլ է տալիս համատեղել տարբեր տեսակի տվյալներ միասին: | Union-ը C լեզվով օգտագործողի կողմից սահմանված տվյալների տեսակ է, որը թույլ է տալիս միավորել տարբեր տեսակի տվյալներ միասին: |
Մատչելիություն | |
Կառույցում նրա բոլոր անդամներին կարելի է մուտք գործել ցանկացած ժամանակ: | Միությունում նրա անդամներից միայն մեկին կարելի է մուտք գործել միաժամանակ, իսկ մյուս բոլոր անդամները կպարունակեն աղբի արժեքներ: |
Հիշողության հատկացում | |
Կառուցվածքային փոփոխականը պահելու համար անհրաժեշտ հիշողությունը բոլոր անդամների հիշողության չափի գումարումն է: | Հիշողությունը, որն անհրաժեշտ է միավորման փոփոխականը պահելու համար, այն հիշողությունն է, որն անհրաժեշտ է միավորման ամենամեծ տարրի համար: |
Հիմնաբառ | |
Կառուցվածքը սահմանելու համար օգտագործվող հիմնաբառը «struct» է։ | Միությունը սահմանելու համար օգտագործվող հիմնաբառը «միություն» է: |
Ամփոփում – Կառուցվածքն ընդդեմ միության C-ում
Միևնույն տիպի տվյալների տարրերը պահելու համար օգտագործվում է զանգված:Երբեմն անհրաժեշտ է լինում տարբեր տեսակի տվյալների տարրեր պահել նույն հիշողության վայրում: C ծրագրավորման լեզուն ապահովում է կառուցվածք և միավորում այս առաջադրանքն իրականացնելու համար: Երկուսն էլ օգտագործողի կողմից սահմանված տվյալների տեսակներ են: Կառուցվածքային փոփոխականը պահելու համար անհրաժեշտ հիշողությունը բոլոր անդամների հիշողության չափի գումարումն է: Միության փոփոխականը պահելու համար պահանջվող հիշողությունը միավորման ամենամեծ տարրի համար պահանջվող հիշողությունն է: Սա կառուցվածքի և միավորման միջև տարբերությունն է C.-ում