C struct (struktūros)

Šioje pamokoje sužinosite apie C programavimo struktūros tipus. Išmoksite apibrėžti ir naudoti struktūras pavyzdžių pagalba.

Programuojant C, struct (arba struktūra) yra kintamųjų rinkinys (gali būti įvairių tipų) vienu pavadinimu.

Kaip apibrėžti struktūras?

Prieš kurdami struktūros kintamuosius, turite apibrėžti jų duomenų tipą. Norėdami apibrėžti struktūrą, naudojamas structraktinis žodis.

Struktūros sintaksė

 struct structureName (dataType narys1; dataType narys2; …); 

Štai pavyzdys:

 struct Asmuo (char name (50); int citNo; kintamasis atlyginimas;); 

Čia struct Personapibrėžtas išvestinis tipas . Dabar galite sukurti tokio tipo kintamuosius.

Sukurkite struktūros kintamuosius

Kai deklaruojamas struktūros tipas, saugykla ar atmintis nepriskiriama. Norėdami paskirstyti tam tikros struktūros tipo atmintį ir dirbti su ja, turime sukurti kintamuosius.

Štai kaip mes kuriame struktūros kintamuosius:

struct Asmuo (char name (50); int citNo; kintamasis atlyginimas;); int main () (struct Asmuo asmuo1, asmuo2, p (20); grąža 0;)

Kitas būdas sukurti struktūrinį kintamąjį yra:

 struct Asmuo (char vardas (50); int citNo; kintamasis atlyginimas;) asmuo1, asmuo2, p (20); 

Abiem atvejais sukuriami du kintamieji person1, person2 ir masyvo kintamasis p, turintys 20 tipo elementų struct Person.

Prieiga prie struktūros narių

Yra du operatorių tipai, naudojami norint pasiekti struktūros narius.

  1. . - narys operatorius
  2. -> - Struktūros žymeklio operatorius (bus aptartas kitoje pamokoje)

Tarkime, norite gauti asmens atlyginimą2. Štai kaip jūs galite tai padaryti.

 asmuo2.alga

Pavyzdys: pridėkite du atstumus

 // Program to add two distances (feet-inch) #include struct Distance ( int feet; float inch; ) dist1, dist2, sum; int main() ( printf("1st distance"); printf("Enter feet: "); scanf("%d", &dist1.feet); printf("Enter inch: "); scanf("%f", &dist1.inch); printf("2nd distance"); printf("Enter feet: "); scanf("%d", &dist2.feet); printf("Enter inch: "); scanf("%f", &dist2.inch); // adding feet sum.feet = dist1.feet + dist2.feet; // adding inches sum.inch = dist1.inch + dist2.inch; // changing to feet if inch is greater than 12 while (sum.inch>= 12) ( ++sum.feet; sum.inch = sum.inch - 12; ) printf("Sum of distances = %d\'-%.1f "", sum.feet, sum.inch); return 0; )

Rezultatas

 1 atstumas Įveskite pėdas: 12 Įveskite colį: 7,9 2 Atstumas Įveskite kojas: 2 Įveskite colį: 9,8 Atstumų suma = 15'-5,7 "

Raktažodis typedef

Mes naudojame typedefraktinį žodį, kad sukurtume slapyvardį duomenų tipams. Paprastai jis naudojamas kartu su struktūromis kintamųjų deklaravimo sintaksei supaprastinti.

Šis kodas

struktūros atstumas (int pėdos; plūduriuojantis colis;) int main () (struktūros atstumas d1, d2;)

yra lygiavertis

typedef struct Atstumas (int pėdos; plūduriuojantis colis;) atstumai; int main () (atstumai d1, d2;)

Lizdinės struktūros

C programavime galite sukurti struktūras struktūroje. Pavyzdžiui,

struktūros kompleksas (int imag; float real;); struct numeris (struct complex comp; int sveikieji skaičiai;) num1, num2;

Tarkime, norite nustatyti num2 kintamojo vaizdą į 11. Štai kaip tai padaryti:

 num2.comp.imag = 11; 

Kodėl statoma C?

Tarkime, norite išsaugoti informaciją apie asmenį: jo vardą, pilietybės numerį ir atlyginimą. Norėdami išsaugoti šią informaciją, galite sukurti skirtingus kintamųjų pavadinimus, citNo ir atlyginimą.

Ką daryti, jei jums reikia saugoti daugiau nei vieno asmens informaciją? Dabar kiekvienai asmeniui reikia sukurti skirtingus kintamuosius: vardas1, citNo1, alga1, vardas2, citNo2, alga2 ir kt.

Geresnis būdas būtų visos susijusios informacijos rinkimas pagal vieną vardo Personstruktūrą ir naudoti ją kiekvienam asmeniui.

Daugiau apie strukt

  • Struktūros ir nuorodos
  • Struktūrų perdavimas funkcijai

Įdomios straipsniai...