I denne opplæringen lærer du å overføre strukturvariabler som argumenter til en funksjon. Du lærer å returnere struktur fra en funksjon ved hjelp av eksempler.
I likhet med variabler av innebygde typer, kan du også overføre strukturvariabler til en funksjon.
Overføring av strukturer til funksjoner
Vi anbefalte deg å lære disse veiledningene før du lærer hvordan du overfører strukturer til funksjoner.
- C-strukturer
- C-funksjoner
- Brukerdefinert funksjon
Slik kan du overføre strukturer til en funksjon
#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); )
Produksjon
Angi navn: Obligasjon Angi alder: 13 Viser informasjon Navn: Obligasjonsalder: 13
Her struct student
opprettes en strukturvariabel s1 av typen . Variabelen sendes til display()
funksjonen ved hjelp av display(s1);
setning.
Returner struktur fra en funksjon
Slik kan du returnere struktur fra en funksjon:
#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; )
Her getInformation()
kalles funksjonen ved hjelp av s = getInformation();
uttalelse. Funksjonen returnerer en struktur av typen struct student
. Den returnerte strukturen vises fra main()
funksjonen.
Legg merke til at returtypen getInformation()
er også struct student
.
Bestått struktur ved referanse
Du kan også sende strukturer ved referanse (på en lignende måte som du overfører variabler av innebygd type med referanse). Vi foreslår at du leser opplæringsveiledning før du fortsetter.
Under referanseoverføring blir minneadressene til strukturvariabler sendt til funksjonen.
#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; )
Produksjon
For første nummer, skriv inn reell del: 1.1 Angi imaginær del: -2.4 For andre nummer, skriv inn reell del: 3.4 Skriv inn imaginær del: -3.2 resultat.real = 4.5 resultat.bilde = -5.6
I det ovennevnte programmet overføres tre strukturvariabler c1, c2 og resultatens adresse til addNumbers()
funksjonen. Her blir resultatet sendt som referanse.
Når resultatvariabelen inne i addNumbers()
endres, endres resultatvariabelen inne i main()
funksjonen deretter.