I denne vejledning lærer du at overføre strukturvariabler som argumenter til en funktion. Du lærer at returnere struktur fra en funktion ved hjælp af eksempler.
I lighed med variabler af indbyggede typer kan du også overføre strukturvariabler til en funktion.
Videregivelse af strukturer til funktioner
Vi anbefalede dig at lære disse selvstudier, før du lærer, hvordan du overfører strukturer til funktioner.
- C strukturer
- C-funktioner
- Brugerdefineret funktion
Her er hvordan du kan overføre strukturer til en funktion
#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); )
Produktion
Indtast navn: Obligation Indtast alder: 13 Viser oplysninger Navn: Obligationsalder: 13
Her struct student
oprettes en strukturvariabel s1 af typen . Variablen sendes til display()
funktionen ved hjælp af display(s1);
sætning.
Returner struktur fra en funktion
Sådan kan du returnere struktur fra en funktion:
#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()
kaldes funktionen ved hjælp af s = getInformation();
udsagn. Funktionen returnerer en struktur af typen struct student
. Den returnerede struktur vises fra main()
funktionen.
Bemærk, at returneringstypen getInformation()
også er struct student
.
Videregiver struktur med reference
Du kan også videregive strukturer ved henvisning (på en lignende måde, som du overfører variabler af indbygget type ved henvisning). Vi foreslår, at du læser gennemgangsvejledningen, før du fortsætter.
Under forbipasserende henvises hukommelsesadresserne til strukturvariabler til funktionen.
#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; )
Produktion
For første nummer, Indtast reel del: 1.1 Indtast imaginær del: -2.4 For andet nummer, Indtast reel del: 3.4 Indtast imaginær del: -3.2 resultat.real = 4.5 resultat.billede = -5.6
I ovenstående program overføres tre strukturvariabler c1, c2 og resultatens adresse til addNumbers()
funktionen. Her sendes resultatet som reference.
Når resultatvariablen inde i addNumbers()
ændres, ændres resultatvariablen inde i main()
funktionen også i overensstemmelse hermed.