|
- DARS. KONKRET STRUKTURALARNI TASVIRLASH
|
bet | 59/89 | Sana | 16.11.2023 | Hajmi | 313,45 Kb. | | #100010 |
Bog'liq @AKT Official C haqida o\'zbekcha darslar majmui59 - DARS. KONKRET STRUKTURALARNI TASVIRLASH.
Yuqoridagi misollarda konkret strukturalarni ta'riflashni ikki usuli ko’rib chiqilgan. Agar strukturali tip standart usulda kiritilgan bo’lsa konkret strukturalar qo’yidagi shaklda ta'riflanadi:
Struct < struktura nomi>
Masalan Struct goods food
Agar strukturali tip typedef hizmatchi so’zi yordamida kiritilgan bo’lsa konkret strukturalar qo’yidagi shaklda ta'riflanadi:
< struktura nomi>
Masalan Complex sigma
Bu usullardan tashqari konkret strukturalarni ta'riflashning boshqa usullari ham mavjuddir. Strukturalar ta'riflanganda konkret strukturalar ruyhatini kiritish mumkin:
Struct struturali_tip_nomi
{Elementlar_ta'riflari}
Konkret_strukturalar_ruyhati.
Misol:
Struct student
{
char name[15];
char surname[20];
int year;
} student_1, student_2, student_3;
Bu holda student strukturali tip bilan birga uchta konkret struktura kiritiladi. Bu strukturalar student ismi (name[15]), familiyasi (surname[20]), tugilgan yilidan (year) iborat.
Strukturali tip ta'riflanganda tip nomi ko’rsatilmay, konkret st'rukturalar ruyhati ko’rsatilishi mumkin:
Struct
{Elementlar_ta'riflari}
Konkret_strukturalar_ruyhati.
Qo’yidagi ta'rif yordamida uchta konkret struktura kiritiladi, lekin strukturali tip kiritilmaydi.
struct {
char processor [10];
int frequency;
int memory;
int disk;
} IBM_486, IBM_386, Compaq;
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
|
| |