I den här handledningen lär du dig att skicka strukturvariabler som argument till en funktion. Du lär dig att returnera struktur från en funktion med hjälp av exempel.
På samma sätt som variabler av inbyggda typer kan du också skicka strukturvariabler till en funktion.
Vidarebefordra strukturer till funktioner
Vi rekommenderade att du lär dig dessa självstudier innan du lär dig hur du skickar strukturer till funktioner.
- C-strukturer
- C-funktioner
- Användardefinierad funktion
Så här kan du skicka strukturer till 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
Ange namn: Bond Ange ålder: 13 Visar information Namn: Bond Ålder: 13
Här struct student
skapas en strukturvariabel s1 av typen . Variabeln skickas till display()
funktionen med hjälp av display(s1);
uttalande.
Returnera struktur från en funktion
Så här kan du returnera struktur från 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; )
Här getInformation()
kallas funktionen med hjälp av s = getInformation();
uttalande. Funktionen returnerar en struktur av typen struct student
. Den returnerade strukturen visas från main()
funktionen.
Lägg märke till att returtypen också getInformation()
är struct student
.
Skickar struktur genom referens
Du kan också skicka strikt genom referens (på liknande sätt som om du skickar variabler av inbyggd typ med referens). Vi föreslår att du läser igenom referenshandledning innan du fortsätter.
Under passera-referens skickas minnesadresserna till struct-variabler till 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
För första siffran, Ange verklig del: 1.1 Ange imaginär del: -2.4 För andra nummer, Ange verklig del: 3.4 Ange imaginär del: -3.2 resultat. Real = 4.5 resultat.bild = -5.6
I ovanstående program skickas tre strukturvariabler c1, c2 och adressens resultat till addNumbers()
funktionen. Här skickas resultatet som referens.
När resultatvariabeln inuti addNumbers()
ändras ändras också resultatvariabeln inuti main()
funktionen.