Anta at vi vil lagre informasjon om brukere som bruker en bestemt tjeneste. Slik informasjon kan inkludere brukernavn, e -post, adresse, servicemodus og slikt. For å lagre slik informasjon kan vi gå om å lage hvert attributt som en frittstående variabel. Men når vi har ti plussbrukere, kan koden gå ut av kontroll og bli veldig vanskelig og slitsom å lese.
For å løse dette kan vi lage en struktur. Inne i strukturen kan vi lagre alle attributtene som deles av alle brukerne og deretter legge til unike variabler for hver bruker.
La oss ta en titt på forskjellige eksempler for å se hvordan du implementerer dette.
Hvordan definere en struktur i C
For å definere en struktur i C, bruker vi strukt -søkeordet etterfulgt av strukturens navn. Etter navnet har vi et par krøllete seler der vi legger til medlemmene.
Vurder syntaksen nedenfor:
strukturstruct_name{
/ * data */
skriv medlemsnavn;
skriv medlemsnavn2;
skriv medlemsnavn3;
...
typemedlemsnavnN;
};
Strukturens navn kan være hva du vil så lenge den overholder navnekonvensjonen til programmeringsspråket C.
Vi kan implementere en eksempelstruktur for brukeranalogien som:
strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
};
Hvordan lage strukturvariabler
Det er to hovedmåter for å lage strukturvariabler. Den første er å erklære dem som normale variabler, og den andre er å sette dem ved hjelp av krøllete seler.
Eksemplet nedenfor viser hvordan man deklarerer strukturvariabler som standard C -variabler.
strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
};
inthoved-(intargc, røye konst *argv[])
{
strukturbrukere bruker1,bruker2,bruker3
komme tilbake 0;
}
Den andre metoden for å lage strukturvariabler er som vist nedenfor:
strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
}bruker1,bruker2,bruker3;
I dette eksemplet oppretter vi dem under strukturerklæring.
Strukturmedlem Init
Du kan ikke initialisere strukturmedlemmene under opprettelsen, siden det ikke er tildelt noe minne for typen.
For å initialisere medlemmene i en struktur, bruker du de krøllete selene som vist nedenfor:
strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
};
inthoved-(intargc, røye konst *argv[])
{
strukturbrukere bruker1= {'mitt brukernavn', '[e -postbeskyttet]', 35, ekte}
komme tilbake 0;
}
Tilgangsstrukturmedlemmer
For å få tilgang til medlemmene i en struktur, bruker vi punktoperatoren, som begynner med strukturnavnet, en prikk og navnet på medlemmet.
strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
};
inthoved-(intargc, røye konst *argv[])
{
strukturbrukere bruker1= {'mitt brukernavn', '[e -postbeskyttet]', 35, ekte}
bruker1.e -post = '[e -postbeskyttet]'
komme tilbake 0;
}
I dette eksemplet får vi tilgang til medlemmene av user1.
Typedef søkeord
Vi bruker typedef -søkeordet til å lage et alias for datatypene, noe som gjør koden mer lesbar.
For eksempel:
typedef strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
}u;
inthoved-(intargc, røye konst *argv[])
{
u bruker1= {'mitt brukernavn', '[e -postbeskyttet]', 35, ekte}
bruker1.registrert = falsk
komme tilbake 0;
}
I eksemplet ovenfor opprettet vi et alias u for brukerstrukturen. Derfor trenger vi ikke ringe struct -brukere hver gang. Vi kan bruke u som definert ovenfor.
Strukturpekere
Du kan også ha en peker til en struktur. Hvis du gjør dette, får du tilgang til medlemmene ved hjelp av -> operatøren.
For eksempel:
typedef strukturbrukere{
røyebrukernavn[tjue];
røyee -post[225];
røyeadresse[femti];
intalder;
bool registrert;
}u;
inthoved-(intargc, røye konst *argv[])
{
u bruker1= {'mitt brukernavn', '[e -postbeskyttet]', 35, ekte}
// peker til en annen struktur
u*user_ptr= &bruker1
user_ptr->brukernavn= 'ptrusername'
komme tilbake 0;
}
Konklusjon
Denne guiden dekker det grunnleggende om å jobbe med strukturer i programmeringsspråket C.
Takk for at du leser!