Birlashmalar (union) — strukturaga o’xshash, ammo muhim farqi bor tuzilma. Strukturada har bir maydon o’z alohida xotira joyiga ega; birlashmada esa barcha maydonlar bitta xotira joyini birgalikda ishlatadi. Bu xotirani tejashda va bir xil xotirani turli tarzda talqin qilishda foydali.
Birlashma (union) — barcha maydonlari bitta umumiy xotira joyini egallaydigan tuzilma. Bir vaqtning o’zida faqat bitta maydon ma’noli qiymatga ega bo’ladi.
Birlashma e’lon qilish
Birlashma union kalit so’zi bilan e’lon qilinadi, sintaksisi strukturaga o’xshash:
#include <stdio.h>
union Qiymat {
int son;
float kasr;
char belgi;
};
int main(void) {
union Qiymat q;
q.son = 42;
printf("Son: %d\n", q.son);
return 0;
}
Son: 42
union Qiymat uch maydonga ega, ammo ular bir xil xotira joyini ishlatadi. Shuning uchun bir vaqtda faqat bittasi ma’noli bo’ladi.
Umumiy xotira
Birlashmaning muhim xususiyati: bir maydonga qiymat berish boshqasini “buzadi”, chunki ular bitta joyni bo’lishadi:
#include <stdio.h>
union Qiymat {
int son;
float kasr;
};
int main(void) {
union Qiymat q;
q.son = 10;
q.kasr = 3.14; /* endi son buzildi */
printf("Kasr: %.2f\n", q.kasr);
return 0;
}
Kasr: 3.14
q.kasr ga qiymat berilgach, q.son endi ishonchsiz — chunki ikkovi bir xil xotirani ishlatadi. Faqat oxirgi yozilgan maydon ma’noli.
struct va union farqi
Ikki tuzilmani jadvalda solishtiramiz:
| Xususiyat | struct |
union |
|---|---|---|
| Xotira | har maydonga alohida | barcha maydonga umumiy |
| Hajmi | maydonlar yig’indisi | eng katta maydon |
| Bir vaqtda | barcha maydon ma’noli | faqat bitta maydon |
Qayerda ishlatiladi?
union xotira juda cheklangan tizimlarda (masalan, mikrokontrollerlarda) va bir xil ma’lumotni turli tarzda talqin qilish kerak bo’lgan joylarda ishlatiladi. Masalan, bir qiymatni goh son, goh belgi sifatida ko’rish. sizeof(union) eng katta maydonning hajmiga teng bo’ladi — bu xotirani tejaydi. Zamonaviy dasturlashda union kam, ammo maxsus vaziyatlarda bebaho.
Xulosa
Bu bo’limda birlashma (union) e’lon qilish, umumiy xotira xususiyatini, struct dan farqini va qo’llanish sohalarini ko’rib chiqdik. union — xotirani tejashning maxsus vositasi. Keyingi darsda preprosessor tushunchasiga o’tamiz.