Aniq fanlar


Download 0.61 Mb.
bet12/20
Sana02.12.2023
Hajmi0.61 Mb.
#1780558
1   ...   8   9   10   11   12   13   14   15   ...   20
Bog'liq
O

sizeof (struct goods)
sizeof (tea)
sizeof coat
Murakkab turlar ya’ni massivlar va strukturali turlar uchun xotiraga talab
ularning ta’rifiga bog’liqdir. Masalan, double array[10] ta’rif xotiradan 10*sizeof
bayt joy ajratilishiga olib keladi.
struct mixture
{
int ii;
long ll;
char cc[8];
};
Bu ta’rif har bir struct mixture turidagi ob’ekt xotirada
sizeof(int)+sizeof(long)+8*sizeof(char) bayt joy egallashini ko’rsatadi. Obekt aniq
31
hajmini quyidagi amal hisoblaydi:
sizeof(struct mixture)
Xotirani tekislash. Strukturali tur kiritilishi bu tur uchun xotiradan joy
ajratilishiga olib kelmaydi. Har bir konkret struktura (ob’ekt) ta’riflanganda, shu
ob’ekt uchun elementlar turlariga qarab xotiradan joy ajratiladi. Xotiradan joy zich
ajratilganda struktura uchun ajratilgan joy hajmi har bir element uchun zarur
bo’lgan xotira hajmlari yig’indisiga teng bo’ladi. Shu bilan birga xotiradan joy zich
ajratilmasligi ham mumkin, ya’ni elementlar orasida bo’sh joylar ham qolishi
mumkin. Bu bo’sh joy keyingi elementni xotira qismlarining qabul qilingan
chegaralari bo’yicha tekislash uchun qoldiriladi. Misol uchun butun turdagi
elementlar juft adreslardan boshlansa, bu elementlarga murojaat tezroq amalga
oshiriladi.
#include
struct Foo
{
char c;
int i;
char s;
};
int main()
{
printf("Foo hajmi = %d",sizeof(Foo));
return 0;
}
Natija:
Foo hajmi = 12
32
Konkret strukturalarni joylashuviga ba’zi kompilyatorlarda #pragma
preprosessor direktivasi yordamida ta’sir o’tkazish mumkin. Bu direktiva quyidagi
shaklda:
pragma pack(n)
Bu yerda n ning qiymati 1, 2 yoki 4 ga teng bo’lishi mumkin.
pack(1) – elementlarni bayt chegaralari bo’yicha tekislash;
pack(2) – elementlarni so’zlar chegaralari bo’yicha tekislash;
pack(4) – elementlarni ikkilangan so’zlar chegaralari bo’yicha teksilash.
Masalan:

Download 0.61 Mb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   20




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