9. Satrlar va tuzilmalar


Download 244.41 Kb.
bet8/8
Sana12.03.2023
Hajmi244.41 Kb.
#1264900
1   2   3   4   5   6   7   8
Bog'liq
09.Satrlar va tuzilmalar

9.5. Birlashmalar


Birlashma – bu bir vaqtda turli tipdagi berilganlarni saqlash uchun foydalaniluvchi xotira sohasi. Birlashmaning o‘lchami eng murakkab berilganlar tipiga mos keladi. Masalan, birlashmada int, float va double tipiga ega bo‘lgan o‘zgaruvchilar aniqlangan. U holda birmashmaning o‘lchami double tipiga mos keladi.
Birlashmani e’lon qilish quyidagicha formatga ega:
union[] {
;
...
< A'zo nomiN>;
} [];
E’lon oxirida nuqtali vergulni ko‘rsatish majburiy hisoblanadi. E’lon berilganlarning yangi tipni bayon qiladi, ammo o‘zgaruvchini aniqlamaydi, shu sababli, u uchun xotira ajratilmaydi. O‘zgaruvchining e’loni birlashma e’lonidan keyin yopiluvchi figurali qavsdan keyin yoki birlashma moni berilganlar tipi sifatida ko‘rsatilib, alohida beriladi:
[union] ;
VC++da o‘zgaruvchini e’lon qilishda union kalit so‘zini ko‘rsatmaslik ham mumkin. O‘zgaruvchi e’lon qilinganidan keyin kompilyator xotiradan zarur o‘lchamni ajratadi. Birlashma va o‘zgaruvchuni e’lon qilishga misol:
union Uni {
int х;
float у;
double z;
} union1;
Qiymatni olish yoki o‘zlashtirish shartli nuqta (nuqta notatsiyasi) yordamida amalga oshiriladi:
. = ;
= .;
Misol:
union1.х = 152;
cout << union1.х << endl; // 152
Birlashmalar funksiyalarni hamda konstruktor va destruktorlarni olishi mumkin. Funksiyalarnini e’lonini birlashma e’loni ichida, aniqlanishi esa e’londan tashqarida joylashtiriladi. Funksiya nomidan oldin birlashma nomi va "::" operatori ko‘rsatiladi. Funksiya ichida birlashma a’zolariga birlashma nomini ko‘rsatmasdan murojaat qilish mumkin.
Birlashmalardan foydalanishga misol.
#include
union Uni {
int x; double y;
void print_x();
void print_y();
};
void Uni::print_x() {
cout << x << endl;
}
void Uni::print_y() {
cout << у << endl;
}
int main() {
Uni union1;
union1.x = 152; union1.print_x(); // 152
union1.у = 1.5e-5; union1.print_y(); // 1.5e-005
cin.get();
return 0;
}

Bir vaqtda birlashma nomini va o‘zgaruvchilar e’lonini bermaslik ham mumkin. Bunday holda birlashma nomsziz yoki anonim deyiladi. Nomsiz birlashmalar a’zolariga kirish aynan a’zolar nomlari orqali amalga oshiriladi. Birlashma a’zolari nomlari ayni shu nomlar fazosida e’lon qilingan o‘zgaruvchilar nomlari bilan to‘qnashmasligi kerak. Global ko‘rinish sohasida yoki nomlar fazosi ichida joylashgan nomsiz birlashmalar static kalit so‘zi yordamia e’lon qilinishi lozim. Quyidagi listingda nomlanmagan (anonim) birlashmalardan foydalanish keltirilgan.
#include
static union { // static so'zini ko'rsatish majburiy
int x; double у;
} ;
int main() {
union { // static so'zi ko'rsatilmaydi
int a; double b;
} ;
х = 12; cout << x << endl; // 12
y = 11.5; cout << y << endl; // 11.5
а = 458; cout << a << endl; // 458
b = 1.7e5; cout << b << endl; // 170000
cin.get();
return 0;
}



Download 244.41 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling