Мәліметтердің құрылымдық типтері келесі сипаттаумен анықталады: struct құрылым_аты
{ элементтерді сипаттау; };
Құрылымның атауын, яғни тәгті жазу міндетті емес. Егер құрылым атаусыз болса, онда оны сипаттау кезінде осы типке кіретін бірнеше айнымалылардың аты бірден көрсетіледі:
// Құрылымдар жиымын және құрылымға нұсқауышты анықтау
struct {
char name[64]; // фамилиясы int age; // жасы
float salary; // жалақысы
unsigned employee_number; // қызметкердің реттік нөмірі
} staff[50], *ps; /* бұл құрылымды жариялаудан кейінгі айнымалыларды анықтау */
Құрылымдар типіндегі айнымалыларды сипаттау екі жолмен жүзеге асырылады. Алғашқы тәсіл:
struct Shape { /* фигуралар */
int type; // 0 - шеңбер, 1 - квадрат, 2 - үшбұрыш int color; // түсі
float radius; // радиусы float area; // ауданы
float perimeter; // периметрі
};
Shape new_shape, old_shape;
Екінші тәсіл:
struct Shape { /* құрылым аты – фигуралар */ int type; // 0 - шеңбер, 1 - квадрат, 2 - үшбұрыш int color; // түсі
float radius; // радиусы float area; // ауданы
float perimeter; // периметрі
} new_shape, old_shape;
немесе мынадай түрде де беруге болады: struct gr /* құрылым аты – топ */
{char fio[30]; /* құрылым элементі – аты-жөні */
char fak[25]; /* құрылым элементі */
int nomer; /* құрылым элементі */
}
gruppa1; /* құрылымдық айнымалы аты */
struct gr gruppa2; /* құрылымдық айнымалыны хабарлау */
Құрылымға компьютер жадынан орын бөлу үшін құрылымдық айнымалыны сипаттау керек:
struct құрылым_аты айнымалы_аты;
Мұндайда құрылым жарияланған соң оның атын бірден пайдалануға болады (анықтауды кейінірек беруге болады), бірақ мұндай тәсіл компиляторға құрылым мөлшерін білу қажет етілмейтін кездерде қолданылады:
struct First; struct Second { First *p;
Second *prev, *suc;
}; struct First { /* First құрылымын анықтау */ };
Бұл құрылымның байланысқан тізімдерін құру мүмкіндігін береді.
Құрылымды инициалдаудың (құрылым өрістеріне мән берудің) бір жолы – оның элементтерін сипатталу реттілігімен жүйелі жақша ішінде біртіндеп беру болып табылады:
struct Employee {
char name[64]; // фамилиясы int age; // жасы
float salary; // жалақысы
unsigned employee_number; // реттік нөмірі
} new_employee = {"Kadуrov",32, 300.5, 1122};
Құрылымдағы жиымдарды инициалдау кезінде олардың элементтерін жүйелі жақшалар арқылы бөліп, құрылым өрістеріне мән беруге болады, мысалы:
struct complex{ unsigned code; float salary;
} comp [2][3]={ {{1021, 301}, {1031, 289}, {1041, 250}},
{{1121, 300}, {1131, 222}, {1141, 220}}
};
немесе төмендегідей түрде де инициалдау мүмкіндіктері бар:
struct date { int day, month, year; };
d[5]={ {1,3,1980},
{5,1,1990},
{1,1,2002} };
Құрылымдарды анықтау барысында олардың элементтеріне бастапқы мәндерді пернелерден енгізіп те меншіктеуге болады. Құрылым элементтерінің мәндерін енгізу үшін ағымдық енгізу операторы cin >> (С++ стилінде) немесе форматпен енгізу операторы – scanf қолданылады.
Егер құрылымды сипаттау жолы программадағы барлық функциялардың алдында орналасса, онда ол құрылымды осы программадағы барлық функциялар пайдалана алады.
Достарыңызбен бөлісу: |