5. Strukturalar bilan ishlash O‘zgaruvchilarning qo‘shimcha turlari, struct
Struktura - ixtiyoriy tur elementlaridan tashkil topgan murakkab ob’yekt. Turdosh ob’yekt bo‘lgan massivdan farqli o‘laroq, struktura turdosh bo‘lmasligi mumkin. Strukturaning turi quyidagicha aniqlanadi:
struct { tavsiflanadiganlar ro‘yxati }
Strukturada kamida bitta komponent ko‘rsatilgan bo‘lishi shart. Struktura quyidagicha tavsiflanadi:
ma’lumotlar_turi tavsiflovchi;
bu yerda ma’lumotlar_turi tavsiflovchida aniqlanadigan ob’yektlar strukturasining turini bildiradi.
Sodda hollarda tavsiflovchilar identifikatorlar yoki massivlarni tasvirlaydi.
Misol:
struct
{
double x,y;
} s1, s2, sm[9];
struct
{
int year;
char moth, day;
} date1, date2;
s1, s2 o‘zgaruvchilar har biri ikkita x va u komponentlardan tashkil topgan strukturalar kabi aniqlanadi. sm o‘zgaruvchi to‘qqizta strukturadan iborat massiv sifatida aniqlangan. date1, date2 o‘zgaruvchilarning har biri uchta year, moth, day komponentlardan tashkil topgan.
Nomlarni struktura turlari bilan bog‘lovchi, struktura turlarining nomlaridan foydalanishga asoslangan boshqa usullar ham mavjud. Struktura nomining turi (teg) standart tur nomi bilan o‘xshash. Strukturaning tegi quyidagicha aniqlanadi:
struct teg { tavsiflar ro‘yxati; };
Bu yerda teg identifikator hisoblanadi.
Quyidagi misolda yuqoridagi misoldagi ma’lumotlar struktura teglaridan foydalanib tasvirlangan.
Misol:
struct st
{
double x,y;
};
st s1, s2, sm[9];
struct Date
{
int year;
char moth, day;
}
Date date1, date2;
Quyida student identifikatori struktura tegi kabi tavsiflangan:
struct student
{
AnsiString name; // O‘quvchining FISh
AnsiString group; // Guruh
int phone; // Uy telefoni
};
Struktura tegi keyinchalik mazkur turdagi kattaliklarni e’lon qilishda quyidagi ko‘rinishda ishlatiladi:
teg identifikatorlar_ro‘yxati;
Misol:
student st1,st2;
Ctruktura teglaridan foydalanish rekursiv strukturalarni e’lon qilish uchun zarur. Quyida rekursiv strukturalar teglaridan foydalanishga misol ko‘rilgan.
struct node
{
int data;
struct node * next;
} st1_node;
node struktura tegi haqiqatdan ham rekursiv hisoblanadi, u next ko‘rsatkichining formalizatsiyasida o‘zini e’lon qilishda ishlatiladi. Struktura to‘g‘ridan-to‘g‘ri rekursiv bo‘lishi mumkin emas, ya’ni node strukturasi node ning strukturasi bo‘lgan komponentga ega bo‘lishi mumkin emas. Ammo ixtiyoriy struktura, yuqoridagi misolda ko‘rilganidek, o‘z turiga ko‘rsatkich bo‘lgan komponentga ega bo‘lishi mumkin.
Struktura komponentlariga murojaat struktura nomiga ko‘rsatkich va nuqtadan keyin ajratilgan komponentning nomi yordamida amalga oshiriladi, masalan :
st1.name="Ivanov";
st1_node.data=st1.phone;
Dostları ilə paylaş: |