C struct (Strukturer)

I den här handledningen lär du dig om strukturtyper i C-programmering. Du lär dig att definiera och använda strukturer med hjälp av exempel.

I C-programmering är en struktur (eller struktur) en samling variabler (kan vara av olika typer) under ett enda namn.

Hur definierar man strukturer?

Innan du kan skapa strukturvariabler måste du definiera dess datatyp. För att definiera en struktur används structnyckelordet.

Syntax för struktur

 struct structureName (dataType medlem1; dataType medlem2;…); 

Här är ett exempel:

 struct Person (char namn (50); int citNo; float lön;); 

Här struct Persondefinieras en härledd typ . Nu kan du skapa variabler av den här typen.

Skapa strukturvariabler

När en strukturtyp deklareras tilldelas inget lagringsutrymme eller minne. För att allokera minne av en viss strukturtyp och arbeta med det måste vi skapa variabler.

Så här skapar vi strukturvariabler:

struct Person (char namn (50); int citNo; float lön;); int main () (struct Person person1, person2, p (20); return 0;)

Ett annat sätt att skapa en strukturvariabel är:

 struct Person (char name (50); int citNo; float lön;) person1, person2, p (20); 

I båda fallen skapas två variabler person1, person2 och en arrayvariabel p med 20 typelement struct Person.

Få tillgång till medlemmar i en struktur

Det finns två typer av operatörer som används för att komma åt medlemmar i en struktur.

  1. . - Medlemsoperatör
  2. -> - Strukturpekareoperatör (kommer att diskuteras i nästa handledning)

Antag att du vill få tillgång till personens lön2. Så här kan du göra det.

 person2.lön

Exempel: Lägg till två avstånd

 // 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; )

Produktion

 1: a avståndet Ange fot: 12 Ange tum: 7.9 2: a avståndet Ange fot: 2 Ange tum: 9.8 Summan av avstånd = 15'-5,7 "

Nyckelord typedef

Vi använder typedefnyckelordet för att skapa ett aliasnamn för datatyper. Det används ofta med strukturer för att förenkla syntaxen för att deklarera variabler.

Den här koden

struct Avstånd (int fötter; float tum;); int main () (struct Avstånd d1, d2;)

är ekvivalent med

typedef struct Avstånd (int fötter; float tum;) avstånd; int main () (avstånd d1, d2;)

Kapslade strukturer

Du kan skapa strukturer inom en struktur i C-programmering. Till exempel,

struct complex (int imag; float real;); struct number (struct complex comp; int heltal;) num1, num2;

Antag att du vill ställa in bilden av num2-variabeln till 11. Så här kan du göra det:

 num2.comp.imag = 11; 

Varför structs i C?

Antag att du vill lagra information om en person: hans / hennes namn, medborgarnummer och lön. Du kan skapa olika variabler namn, citNo och lön för att lagra denna information.

Vad händer om du behöver lagra information om mer än en person? Nu måste du skapa olika variabler för varje information per person: namn1, citNo1, lön1, namn2, citNo2, lön2, etc.

En bättre metod skulle vara att ha en samling av all relaterad information under en enda Personnamnstruktur och använda den för varje person.

Mer om struct

  • Strukturer och pekare
  • Förmedla strukturer till en funktion

Intressanta artiklar...