C struct (Structuren)

In deze tutorial leer je over struct-typen in C Programming. Aan de hand van voorbeelden leer je structuren definiëren en gebruiken.

Bij C-programmering is een struct (of structuur) een verzameling variabelen (kunnen van verschillende typen zijn) onder één naam.

Hoe structuren te definiëren?

Voordat u structuurvariabelen kunt maken, moet u het gegevenstype definiëren. Om een ​​structuur te definiëren, wordt het structtrefwoord gebruikt.

Syntaxis van struct

 struct structureName (dataType lid1; dataType lid2;…); 

Hier is een voorbeeld:

 struct Person (char name (50); int citNo; float salaris;); 

Hier wordt een afgeleid type struct Persongedefinieerd. Nu kunt u variabelen van dit type maken.

Maak struct-variabelen

Wanneer een struct-type wordt gedeclareerd, wordt er geen opslag of geheugen toegewezen. Om geheugen van een bepaald structuurtype toe te wijzen en ermee te werken, moeten we variabelen maken.

Zo maken we structuurvariabelen:

struct Person (char name (50); int citNo; float salaris;); int main () (struct Person person1, person2, p (20); return 0;)

Een andere manier om een ​​struct-variabele te maken is:

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

In beide gevallen worden twee variabelen person1, person2 en een arrayvariabele p met 20 type-elementen struct Persongemaakt.

Toegang tot leden van een structuur

Er zijn twee soorten operators die worden gebruikt voor toegang tot leden van een structuur.

  1. . - Lid operator
  2. -> - Structuurwijzer-operator (wordt besproken in de volgende tutorial)

Stel dat u toegang wilt hebben tot het salaris van person2. Hier leest u hoe u het kunt doen.

 person2.salaris

Voorbeeld: voeg twee afstanden toe

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

Uitvoer

 1e afstand Voer voet in: 12 Voer inch in: 7,9 2e afstand Voer voet in: 2 Voer inch in: 9,8 Som van afstanden = 15'-5,7 "

Trefwoordtypeef

We gebruiken het typedeftrefwoord om een ​​aliasnaam voor gegevenstypen te maken. Het wordt vaak gebruikt met structuren om de syntaxis van het declareren van variabelen te vereenvoudigen.

Deze code

struct Distance (int feet; float inch;); int main () (struct Distance d1, d2;)

is gelijk aan

typedef struct Distance (int feet; float inch;) afstanden; int main () (afstanden d1, d2;)

Geneste structuren

U kunt structuren binnen een structuur maken in C-programmering. Bijvoorbeeld,

struct complex (int imag; float real;); struct nummer (struct complex comp; int gehele getallen;) num1, num2;

Stel dat u imag van num2-variabele op 11 wilt zetten. U kunt dit als volgt doen:

 num2.comp.imag = 11; 

Waarom structs in C?

Stel dat u informatie over een persoon wilt opslaan: zijn / haar naam, burgerschapsnummer en salaris. U kunt verschillende variabelen naam, citNo en salaris maken om deze informatie op te slaan.

Wat als u informatie van meer dan één persoon moet opslaan? Nu moet u verschillende variabelen maken voor elke informatie per persoon: naam1, citNo1, salaris1, naam2, citNo2, salaris2, enz.

Een betere benadering zou zijn om een ​​verzameling van alle gerelateerde informatie onder één naamstructuur Personte hebben en deze voor elke persoon te gebruiken.

Meer over struct

  • Structuren en aanwijzingen
  • Structuren doorgeven aan een functie

Interessante artikelen...