C szerkezetek

Structures C



A C-ben a szerkezet egy felhasználó által definiált változó, amelyet egy változógyűjtemény egyetlen entitás alá történő tárolására használnak. Egy egyszerű analógia segítségével magyarázzuk el a struktúrák megvalósítását és hasznosságát C -ben.

Tegyük fel, hogy információkat akarunk tárolni a felhasználókról, akik egy adott szolgáltatást használnak. Ilyen információ lehet a felhasználónév, e -mail, cím, szolgáltatási mód stb. Az ilyen információk tárolásához létrehozhatjuk az egyes attribútumokat önálló változóként. Ha azonban tíz plusz felhasználónk van, akkor a kód elfordulhat az irányítástól, és nagyon nehéz és fárasztó lesz az olvasása.







Ennek megoldásához létrehozhatunk egy struktúrát. A struktúrán belül tárolhatjuk az összes felhasználó által megosztott összes attribútumot, majd egyedi változókat adhatunk hozzá minden felhasználóhoz.



Nézzünk meg néhány példát, hogy megtudjuk, hogyan kell ezt megvalósítani.



Hogyan definiálhatunk struktúrát C -ben

A C struktúra meghatározásához a szerkezet kulcsszót használjuk, amelyet a szerkezet neve követ. A név után van egy pár göndör zárójele, ahol hozzáadjuk a tagokat.





Tekintsük az alábbi szintaxist:

strukstruktúra_neve
{
/ * adatok */
írja be a tag_nevet;
írja be a tag_nevet2;
írja be a tag_nevet3;

...
típustag_neveN;
};

A szerkezet neve bármi lehet, amit csak akar, amennyiben betartja a C programozási nyelv elnevezési konvencióját.



A felhasználói analógia példaszerkezetét a következőképpen valósíthatjuk meg:

strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
};

Strukturális változók létrehozása

A strukturális változók létrehozásának két fő módja van. Az első, hogy normál változóként deklarálja őket, a másik pedig göndör zárójelek használatával.

Az alábbi példa bemutatja, hogyan kell a strukturális változókat standard C változóként deklarálni.

strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
};

intfő-(intargc, char const *argv[])
{
strukfelhasználók user1,felhasználó2,felhasználó3
Visszatérés 0;
}

A strukturális változók létrehozásának másik módja az alábbi:

strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
}felhasználó1,felhasználó2,felhasználó3;

Ebben a példában a struktúra deklarálása során hozzuk létre őket.

Struktúra Tag Init

A szerkezeti tagokat nem lehet inicializálni a létrehozás során, mivel nincs memória a típushoz.

A szerkezet elemeinek inicializálásához használja az alábbi ábrán látható göndör zárójelet:

strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
};
intfő-(intargc, char const *argv[])
{
strukfelhasználók user1= {'myusername', '[email protected]', 35, igaz}
Visszatérés 0;
}

Hozzáférési struktúra tagjai

Egy struktúra tagjainak eléréséhez a pont operátort használjuk, kezdve a szerkezet nevével, egy ponttal és a tag nevével.

strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
};
intfő-(intargc, char const *argv[])
{
strukfelhasználók user1= {'myusername', '[email protected]', 35, igaz}
felhasználó1.email = '[email protected]'
Visszatérés 0;
}

Ebben a példában a user1 tagjaihoz férünk hozzá.

Typedef kulcsszó

A typedef kulcsszó segítségével álnevet hozunk létre az adattípusokhoz, így a kód jobban olvasható.

Például:

typedef strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
}u;
intfő-(intargc, char const *argv[])
{
u felhasználó1= {'myusername', '[email protected]', 35, igaz}
felhasználó1.bejegyzett = hamis
Visszatérés 0;
}

A fenti példában egy felhasználói álnevet hoztunk létre a felhasználói struktúrához. Ezért nem kell minden alkalommal strukturális felhasználókat hívnunk. A fentiek szerint használhatjuk az u -t.

Szerkezeti mutatók

A struktúrára is mutathat mutatót. Ezzel lehetővé teszi a tagok elérését a -> operátor segítségével.

Például:

typedef strukfelhasználók
{
charfelhasználónév[húsz];
charemail[225];
charcím[ötven];
intkor;
bool regisztrált;
}u;
intfő-(intargc, char const *argv[])
{
u felhasználó1= {'myusername', '[email protected]', 35, igaz}

// mutató egy másik szerkezetre
u*user_ptr= &felhasználó1
user_ptr->felhasználónév= 'ptrusername'
Visszatérés 0;
}

Következtetés

Ez az útmutató a C programozási nyelvű struktúrákkal való munka alapjait ismerteti.

Köszönöm, hogy elolvasta!