Struktūros

You might also like

You are on page 1of 10

Struktūros

Įvadas
Masyvai leidžia aprašyti ir saugoti to paties tipo elementų rinkinius
Struktūros taip pat yra vartotojo duomenų tipai, kurios leidžia
apjungti skirtingo tipo duomenis
Paprastai struktūros aprašo tam tikrą įrašą
Tarkime, norime saugoti duomenis apie studentą ir norime saugoti
tokius duomenis:
Vardą,
Pavardę,
Gimimo metus,
Pažymių vidurkį
Kaip matome, čia yra char* (vardas ir pavardė), int (metai) ir float
(vidurkis) duomenų tipai, taigi su vienu masyvu to padaryti neišeis
Aprašyti struktūrą reikia naudoti struct žodelį
Taip aprašome naują duomenų tipą, kuris savyje turės
kitus vidinius narius
Bendra sintaksė ir pavyzdys:

struct [strukturos pavadinimas] { struct Studentas {


tipas kintamasis; char vardas[50];
tipas kintamasis; char pavarde[50];
... int metai;
tipas kintamasis; float vidurkis;
} [vienas ar keli strukturos kintamieji]; } studentas1, *stud_ptr;
Norint pasiekti struktūros vidinį narį, naudojamas taško (.) operatorius
Pvz.
strcpy(studentas1.vardas,”Jonas”);
studentas1.metai=1992;
studentas1.vidurkis=8.6;
Jei naudojama rodyklė į struktūrą, tuomet naudojamas -> operatorius
Pvz.
strcpy(stud_ptr->vardas,”Jonas”);
stud_ptr->metai=1992;
stud_ptr->vidurkis=8.6;
Jei naudojama rodyklė į struktūrą, tuomet naudojamas -> operatorius
Struktūras galima perduoti ir funkcijoms, be to funkcijos gali grąžinti
struktūros kintamuosius su return;
Pavyzdys
#include <stdio.h>
#include <string.h>

struct Studentas {
char vardas[50];
char pavarde[50];
int metai;
float vidurkis;
};

int main( ) {

struct Studentas stud1; /* Paskelbiame Studentas tipo kintamaji stud1 */


struct Studentas stud2; /* Paskelbiame Studentas tipo kintamaji stud2 */

/* uzpildom pirma studenta */


strcpy( stud1.vardas, "Jonas");
strcpy( stud1.pavarde, "Jonaitis");
stud1.metai=1999;
stud1.vidurkis=8.8;
/* uzpildom antra studenta */
strcpy( stud2.vardas, "Petras");
strcpy( stud2.pavarde, "Petraitis");
stud2.metai=1998;
stud2.vidurkis=5.0;

/* Spausdinam pirmo studento informacija */


printf( "Pirmo studento vardas : %s\n", stud1.vardas);
printf( "Pirmo studento pavarde : %s\n", stud1.pavarde);
printf( "Pirmo studento gimimo metai : %d\n", stud1.metai);
printf( "Pirmo studento vdurkis : %f\n", stud1.vidurkis);

/* Spausdinam antro studento informacija */


printf( "Antro studento vardas : %s\n", stud2.vardas);
printf( "Antro studento pavarde : %s\n", stud2.pavarde);
printf( "Antro studento gimimo metai : %d\n", stud2.metai);
printf( "Antro studento vdurkis : %f\n", stud2.vidurkis);

return 0;
}
Pavyzdys su funkcijom
#include <stdio.h>
#include <string.h>

struct Studentas {
char vardas[50];
char pavarde[50];
int metai;
float vidurkis;
};

int main( ) {

struct Studentas stud1; /* Paskelbiame Studentas tipo kintamaji stud1 */


struct Studentas stud2; /* Paskelbiame Studentas tipo kintamaji stud2 */

/* uzpildom pirma studenta */


strcpy( stud1.vardas, "Jonas");
strcpy( stud1.pavarde, "Jonaitis");
stud1.metai=1999;
stud1.vidurkis=8.8;
/* uzpildom antra studenta */
strcpy( stud2.vardas, "Petras");
strcpy( stud2.pavarde, "Petraitis");
stud2.metai=1998;
stud2.vidurkis=5.0;

/* Spausdinam pirmo studento informacija */


spausdintiStudenta(stud1);

/* Spausdinam antro studento informacija */


spausdintiStudenta(stud2);

return 0;
}

void spausdintiStudenta(struct Studentas st){


printf( "Studento vardas : %s\n", st.vardas);
printf( "Studento pavarde : %s\n", st.pavarde);
printf( "Studento gimimo metai : %d\n", st.metai);
printf( "Studento vdurkis : %f\n", st.vidurkis);
}
Pavyzdys su rodyklėm
#include <stdio.h>
#include <string.h>

struct Studentas {
char vardas[50];
char pavarde[50];
int metai;
float vidurkis;
};

int main( ) {

struct Studentas stud1; /* Paskelbiame Studentas tipo kintamaji stud1 */


struct Studentas stud2; /* Paskelbiame Studentas tipo kintamaji stud2 */

/* uzpildom pirma studenta */


strcpy( stud1.vardas, "Jonas");
strcpy( stud1.pavarde, "Jonaitis");
stud1.metai=1999;
stud1.vidurkis=8.8;
/* uzpildom antra studenta */
strcpy( stud2.vardas, "Petras");
strcpy( stud2.pavarde, "Petraitis");
stud2.metai=1998;
stud2.vidurkis=5.0;

/* Spausdinam pirmo studento informacija */


spausdintiStudenta(&stud1);

/* Spausdinam antro studento informacija */


spausdintiStudenta(&stud2);

return 0;
}

void spausdintiStudenta(struct Studentas *st){


printf( "Studento vardas : %s\n", st->vardas);
printf( "Studento pavarde : %s\n", st->pavarde);
printf( "Studento gimimo metai : %d\n", st->metai);
printf( "Studento vdurkis : %f\n", st->vidurkis);
}

You might also like