60 - DARS. STRUKTURALAR UCHUN HOTIRADAN JOY AJRATISH.
Strukturali tip kiritilishi bu tip uchun hotiradan joy ajratilishiga olib kelmaydi. Har bir konkret struktura (ob'ekt) ta'riflanganda, shu ob'ekt uchun elementlar tiplariga qarab hotiradan joy ajratiladi. Hotiradan joy zich ajratilganda struktura uchun ajratilgan joy hajmi har bir element uchun zarur bo’lgan hotira hajmlari yig’indisiga teng bo’ladi. Shu bilan birga hotiradan joy zich ajratilmasligi ham mumkin ya'ni elementlar orasida bo’sh joylar ham qolishi mumkin. Bu bo’sh joy keyingi elementni hotira qismlarining qabul qilingan chegaralari bo’yicha tekislash uchun qoldiriladi. Misol uchun butun tipdagi elementlar juft adreslardan boshlansa, bu elementlarga murojaat tezroq amalga oshiriladi. Konkret strukturalarni joylashuviga ba'zi kompilyatorlarda #pragma preprotsessor direktivasi yordamida ta'sir o’tkazish mumkin. Bu direktivadan qo’yidagi shaklda:
Pragma pack(n)
Bu erda n qiymati 1,2 eki 4 ga teng bo’lishi mumkin.
Pack(1) – elementlarni bayt chegaralari bo’yicha tekislash;
Pack(2) – elementlarni so’zlar chegaralariga qarab tekislash;
Pack(4) – elementlarni ikkilangan muzlar chegaralariga qarab tekislash.
Struktura uchun ajratilgan joy hajmini qo’yidagi amallar yordamida aniqlash mumkin:
Sizeof (strukturali_tip_nomi);
Sizeof (struktura_nomi);
Sizeof struktura_nomi.
Ohirgi holda struktura nomi ifoda deb qaraladi. Ifodaning tipi aniqlanib, hajmi hisoblanadi.
Misol uchun:
Sizeof (struct goods)
Sizeof (tea)
Sizeof coat
Dostları ilə paylaş: |