In diesem Tutorial lernen Sie, Strukturvariablen als Argumente an eine Funktion zu übergeben. Sie werden anhand von Beispielen lernen, struct aus einer Funktion zurückzugeben.
Ähnlich wie bei Variablen mit integrierten Typen können Sie auch Strukturvariablen an eine Funktion übergeben.
Strukturen an Funktionen übergeben
Wir empfehlen Ihnen, diese Tutorials zu lernen, bevor Sie lernen, wie Sie Strukturen an Funktionen übergeben.
- C-Strukturen
- C-Funktionen
- Benutzerdefinierte Funktion
So können Sie Strukturen an eine Funktion übergeben
#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); )
Ausgabe
Name eingeben: Anleihe Alter eingeben: 13 Informationen anzeigen Name: Anleihe Alter: 13
Hier wird eine Strukturvariable s1 vom Typ struct student
erstellt. Die Variable wird mit der Anweisung an die display()
Funktion übergeben display(s1);
.
Struktur von einer Funktion zurückgeben
So können Sie die Struktur einer Funktion zurückgeben:
#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 wird die getInformation()
Funktion using- s = getInformation();
Anweisung aufgerufen . Die Funktion gibt eine Struktur vom Typ zurück struct student
. Die zurückgegebene Struktur wird von der main()
Funktion angezeigt .
Beachten Sie, dass der Rückgabetyp getInformation()
auch ist struct student
.
Struktur als Referenz übergeben
Sie können Strukturen auch als Referenz übergeben (ähnlich wie Sie Variablen vom integrierten Typ als Referenz übergeben). Wir empfehlen Ihnen, das Tutorial "Pass by Reference" zu lesen, bevor Sie fortfahren.
Während der Referenzübergabe werden die Speicheradressen der Strukturvariablen an die Funktion übergeben.
#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; )
Ausgabe
Geben Sie für die erste Zahl den Realteil ein: 1.1 Geben Sie den Imaginärteil ein: -2.4 Geben Sie für die zweite Zahl den Realteil ein: 3.4 Geben Sie den Imaginärteil ein: -3.2 result.real = 4.5 result.imag = -5.6
Im obigen Programm werden drei Strukturvariablen c1, c2 und die Ergebnisadresse an die addNumbers()
Funktion übergeben. Hier wird das Ergebnis als Referenz übergeben.
Wenn die Ergebnisvariable innerhalb von addNumbers()
geändert wird, wird auch die Ergebnisvariable innerhalb der main()
Funktion entsprechend geändert.