Štruktúry v C

Structures C



V jazyku C je štruktúra premennou definovanou používateľom, ktorá sa používa na uloženie zbierky premenných pod jednou entitou. Použime jednoduchú analógiu na vysvetlenie implementácie štruktúr a užitočnosti v C.

Predpokladajme, že chceme uchovávať informácie o používateľoch používajúcich konkrétnu službu. Tieto informácie môžu zahŕňať používateľské meno, e -mail, adresu, režim služby a podobne. Na uloženie takýchto informácií môžeme pristúpiť k vytvoreniu každého atribútu ako samostatnej premennej. Keď však máme desať a viac používateľov, kód sa môže vymknúť spod kontroly a stať sa veľmi ťažkým a únavným na čítanie.







Aby sme to vyriešili, môžeme vytvoriť štruktúru. Vnútri štruktúry môžeme uložiť všetky atribúty zdieľané všetkými používateľmi a potom pre každého používateľa pridať jedinečné premenné.



Pozrime sa na rôzne príklady, ako to implementovať.



Ako definovať štruktúru v C

Na definovanie štruktúry v jazyku C používame kľúčové slovo struct, za ktorým nasleduje názov štruktúry. Za názvom máme pár zložených zátvoriek, do ktorých pridáme členy.





Zvážte nižšie uvedenú syntax:

Structstruct_name
{
/ * údaje */
zadajte meno člena;
napíšte member_name2;
napíšte member_name3;

...
typmember_nameN;
};

Názov štruktúry môže byť ľubovoľný, pokiaľ dodržiava konvenciu pomenovania programovacieho jazyka C.



Príkladovú štruktúru používateľskej analógie môžeme implementovať ako:

Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
};

Ako vytvárať premenné štruktúry

Existujú dva hlavné spôsoby vytvárania štruktúrnych premenných. Prvá z nich je deklarovať ich ako normálne premenné a druhá ich nastaviť pomocou zložených zátvoriek.

Nasledujúci príklad ukazuje, ako deklarovať premenné štruktúry ako štandardné premenné C.

Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
};

intHlavná(intargc, char konšt *argv[])
{
Structužívatelia užívateľ1,užívateľ2,užívateľ3
vrátiť sa 0;
}

Ďalší spôsob vytvárania štruktúrnych premenných je nasledujúci:

Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
}užívateľ 1,užívateľ2,užívateľ3;

V tomto prípade ich vytvoríme počas deklarácie štruktúry.

Štruktúra Člen Init

Počas vytvárania nemôžete inicializovať členy štruktúry, pretože pre typ nie je vyhradená žiadna pamäť.

Na inicializáciu prvkov štruktúry použite zložené zátvorky, ako je uvedené nižšie:

Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
};
intHlavná(intargc, char konšt *argv[])
{
Structužívatelia užívateľ1= {'myusername', '[email protected]', 35, pravda}
vrátiť sa 0;
}

Prístup k členom štruktúry

Na prístup k členom štruktúry používame operátor bodiek, začínajúc názvom štruktúry, bodkou a názvom člena.

Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
};
intHlavná(intargc, char konšt *argv[])
{
Structužívatelia užívateľ1= {'myusername', '[email protected]', 35, pravda}
užívateľ 1.e -mail = '[email protected]'
vrátiť sa 0;
}

V tomto prípade pristupujeme k členom user1.

Kľúčové slovo typpedef

Kľúčové slovo typedef použijeme na vytvorenie aliasu pre dátové typy, aby bol kód čitateľnejší.

Napríklad:

typedef Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
}u;
intHlavná(intargc, char konšt *argv[])
{
u užívateľ 1= {'myusername', '[email protected]', 35, pravda}
užívateľ 1.registrovaný = falošný
vrátiť sa 0;
}

V uvedenom príklade sme vytvorili alias u pre štruktúru používateľov. Preto nemusíme zakaždým volať používateľom štruktúry. Môžeme vás použiť, ako je definované vyššie.

Ukazovatele štruktúry

Môžete mať aj ukazovateľ na štruktúru. To vám umožní prístup k členom pomocou operátora ->.

Napríklad:

typedef Structpoužívateľov
{
charpoužívateľské meno[dvadsať];
chare -mail[225];
charadresa[päťdesiat];
intVek;
bool zaregistrovaný;
}u;
intHlavná(intargc, char konšt *argv[])
{
u užívateľ 1= {'myusername', '[email protected]', 35, pravda}

// ukazovateľ na inú štruktúru
u*user_ptr= &užívateľ 1
user_ptr->používateľské meno= 'ptrusername'
vrátiť sa 0;
}

Záver

Táto príručka sa zaoberá základmi práce so štruktúrami v programovacom jazyku C.

Ďakujem za čítanie!