Konstrukcija struct Spausdinti
( 12 Votes )

Parašė Aurimas Šimkus   

 Konstrukcija struct yra skirta sudėtinių duomenų tipų kūrimui. Pvz., kintamasis, aprašantis žmogų, neturėtų būti vien jo vardas ar pavardė, bet ir jo amžius, ūgis, ir pan. Taigi žmogaus aprašymui reikėtų net kelių kintamųjų, o didelis jų kiekis reikalauja daugiau kodo. Tačiau konstrukcijos struct pagalba visus šiuos kintamuosius galima susieti vos viename kitnamajame, kas taip pat palengvina ir programos kodo rašymą bei skaitymą. Struct konstrukcijos aprašas:

struct Struktūros_pavadinimas
{
     tipas1 laukas1;     //struktūros laukai gali būti ir masyvai arba kitų struktūrų kintamieji
     tipas2 laukas2;
     ...
} globalūs_struktūros_tipo_kintamieji;     //kintamieji gali būti globalūs arba priskiriami kaip ir paprastųjų tipų kintamieji (pateikta kitame pavyzdyje).

PS struktūra aprašoma virš main() funkcijos!

Struktūroje esantys laukai gali būtį vadinami tos struktūros vidiniais kintamaisiais. Kreipimasis į lauką, kai turime struktūros tipo kintamąjį t, aprašomas taip (struktūros kintamasis-taškas-laukas):

t.laukas;

 

Pavyzdys. 1) Sukukime žmogaus tipo struktūrą.

struct Zmogus
{
     string vardas;
     string pavarde;
     unsigned amzius;     //neneigiamas int
     unsigned ugis;
} ;     //globaliųjų kintamųjų nepriskiriame

2) Main f-joje deklaruokime kintamąjį (žmogų) z1 ir priskirkimie jam vardą, pavardę, amžių ir ūgį.

Zmogus z1;     //z1 deklaravimas. Kaip matome, nesiskiria nuo paprastųjų duom. tipų deklaravimo, taip pat galimas ir masvymo realizavimas
z1.vardas = "Modestas";
z1.pavarde = "Kikis";
z1.amzius = 14;
z1.ugis= 159;
 

3) z1 pasendiname 6 metais ir atspausdiname visus jo duomenis.

z1.amzius = z1.amzius + 6;     //arba z1.amzius += 6;
cout << "Zmogaus z1 isklotine:\n";
cout << "Vardas - " << z1.vardas << "\nPavarde - " << z1.pavarde << "\nAmzius - " << z1.amzius << "\nUgis - " << z1.ugis;

Matome, kad veiksmai su struktūromis nesiskiria nuo veiksmų su paparastaisiais duomenų tipais.

 

Visos pavyzdinės programos kodas C++ kalba:

#include <iostream>
#include <string>
using namespace std;

struct Zmogus	//struktūra aprašoma virš main() f-jos!
{
      string vardas;
      string pavarde;
      unsigned amzius;     //neneigiamas int
      unsigned ugis;
} ;     //globaliųjų kintamųjų nepriskiriame

int main()
{
      Zmogus z1;     //z1 deklaravimas. Kaip matome, nesiskiria nuo paprastųjų duom. tipų deklaravimo, taip pat galimas ir masvymo realizavimas
      z1.vardas = "Modestas";
      z1.pavarde = "Kikis";
      z1.amzius = 14;
      z1.ugis= 159; 
 
      z1.amzius = z1.amzius + 6;     //arba z1.amzius += 6;

      cout << "Zmogaus z1 isklotine:\n";
      cout << "Vardas - " << z1.vardas << "\nPavarde - " << z1.pavarde << "\nAmzius - " << z1.amzius << "\nUgis - " << z1.ugis << "\n\n";
      return 1;
} 

Programos vykdymo pavyzdys:

C++ struct konstrukcijos pavyzdys