Տարբերությունը Կառուցվածքի և միության միջև C

Բովանդակություն:

Տարբերությունը Կառուցվածքի և միության միջև C
Տարբերությունը Կառուցվածքի և միության միջև C

Video: Տարբերությունը Կառուցվածքի և միության միջև C

Video: Տարբերությունը Կառուցվածքի և միության միջև C
Video: F. Chopin - Rondo in C minor Op. 1 - analysis. Greg Niemczuk's lecture 2024, Նոյեմբեր
Anonim

Հիմնական տարբերություն – Կառուցվածքն ընդդեմ միության 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);

Վերաբերեք ստորև ներկայացված ծրագրի կառուցվածքին:

Կառուցվածքի և միության միջև տարբերությունը C
Կառուցվածքի և միության միջև տարբերությունը C

Նկար 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);

Նշեք ստորև ներկայացված ծրագիրը միության հետ:

Կառուցվածքի և միության միջև տարբերությունը C_Նկար 02-ում
Կառուցվածքի և միության միջև տարբերությունը C_Նկար 02-ում

Նկար 02. C ծրագիր՝ օգտագործելով union

Ըստ վերոնշյալ ծրագրի՝ Գիրքը միություն է։ Book1-ը միության տիպի փոփոխական է: Անունը և գինը նշանակված են արժեքներ: Միությունում նրա անդամներից միայն մեկին կարելի է մուտք գործել միաժամանակ, իսկ մնացած բոլոր անդամները կունենան աղբի արժեքներ: ID-ի արժեքը ճիշտ չի տպվում, բայց գնի արժեքը ճիշտ է տպվում:

Հիմնական տարբերությունը կառուցվածքի և միության միջև C
Հիմնական տարբերությունը կառուցվածքի և միության միջև C

Նկար 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.-ում

Խորհուրդ ենք տալիս: