C Struct en functies

In deze zelfstudie leert u struct-variabelen als argumenten aan een functie door te geven. Je leert aan de hand van voorbeelden struct terug te geven vanuit een functie.

Net als bij variabelen van ingebouwde typen, kunt u ook structuurvariabelen aan een functie doorgeven.

Structs doorgeven aan functies

We raden u aan deze tutorials te leren voordat u leert hoe u structs aan functies kunt doorgeven.

  • C-structuren
  • C-functies
  • Door de gebruiker gedefinieerde functie

Hier leest u hoe u structuren aan een functie kunt doorgeven

 #include struct student ( char name(50); int age; ); // function prototype void display(struct student s); int main() ( struct student s1; printf("Enter name: "); // read string input from the user until is entered // is discarded scanf("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); display(s1); // passing struct as an argument return 0; ) void display(struct student s) ( printf("Displaying information"); printf("Name: %s", s.name); printf("Age: %d", s.age); )

Uitvoer

 Voer naam in: Bond Voer leeftijd in: 13 Informatie weergeven Naam: Bond Leeftijd: 13 

Hier wordt een struct-variabele s1 van het type struct studentgemaakt. De variabele wordt met de instructie aan de display()functie doorgegeven display(s1);.

Retourneer struct van een functie

Hier leest u hoe u structuur van een functie kunt retourneren:

 #include struct student ( char name(50); int age; ); // function prototype struct student getInformation(); int main() ( struct student s; s = getInformation(); printf("Displaying information"); printf("Name: %s", s.name); printf("Roll: %d", s.age); return 0; ) struct student getInformation() ( struct student s1; printf("Enter name: "); scanf ("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); return s1; ) 

Hier wordt de getInformation()functie aangeroepen met s = getInformation();statement. De functie retourneert een structuur van het type struct student. De geretourneerde structuur wordt weergegeven vanuit de main()functie.

Merk op dat het retourtype getInformation()ook is struct student.

Struct doorgeven door middel van referentie

U kunt ook structs doorgeven via verwijzing (op dezelfde manier als u variabelen van het ingebouwde type door middel van verwijzing doorgeeft). We raden u aan om de tutorial door te lezen voordat u verder gaat.

Tijdens pass by reference worden de geheugenadressen van struct-variabelen aan de functie doorgegeven.

 #include typedef struct Complex ( float real; float imag; ) complex; void addNumbers(complex c1, complex c2, complex *result); int main() ( complex c1, c2, result; printf("For first number,"); printf("Enter real part: "); scanf("%f", &c1.real); printf("Enter imaginary part: "); scanf("%f", &c1.imag); printf("For second number, "); printf("Enter real part: "); scanf("%f", &c2.real); printf("Enter imaginary part: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("result.real = %.1f", result.real); printf("result.imag = %.1f", result.imag); return 0; ) void addNumbers(complex c1, complex c2, complex *result) ( result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; ) 

Uitvoer

 Voor het eerste getal, voer het reële deel in: 1.1 Voer het imaginaire deel in: -2,4 Voor het tweede getal, voer het reële deel in: 3.4 Voer het imaginaire deel in: -3.2 result.real = 4.5 result.imag = -5.6 

In het bovenstaande programma worden drie structuurvariabelen c1, c2 en het adres van resultaat doorgegeven aan de addNumbers()functie. Hier wordt het resultaat door verwijzing doorgegeven.

Wanneer de resultaatvariabele binnen de addNumbers()wordt gewijzigd, wordt de resultaatvariabele binnen de main()functie ook dienovereenkomstig gewijzigd.

Interessante artikelen...