C Struktur und Funktion
C-Struktur und Funktion
In diesem Lernprogramm lernen Sie, Strukturvariablen als Argumente an eine Funktion zu übergeben. Anhand von Beispielen lernen Sie, struct aus einer Funktion zurückzugeben.
Ähnlich wie bei Variablen eingebauter 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 man Strukturen an Funktionen übergibt.
- C-Strukturen
- C-Funktionen
- Benutzerdefinierte Funktion
So können Sie Strukturen an eine Funktion übergeben
#include <stdio.h>
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 \n is entered
// \n is discarded
scanf("%[^\n]%*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("\nDisplaying information\n");
printf("Name: %s", s.name);
printf("\nAge: %d", s.age);
}
Ausgabe
Enter name: Bond Enter age: 13 Displaying information Name: Bond Age: 13
Hier eine Strukturvariable s1 vom Typ struct student
geschaffen. Die Variable wird an display()
übergeben Funktion mit display(s1);
Erklärung.
Struct von einer Funktion zurückgeben
So können Sie die Struktur einer Funktion zurückgeben:
#include <stdio.h>
struct student
{
char name[50];
int age;
};
// function prototype
struct student getInformation();
int main()
{
struct student s;
s = getInformation();
printf("\nDisplaying information\n");
printf("Name: %s", s.name);
printf("\nRoll: %d", s.age);
return 0;
}
struct student getInformation()
{
struct student s1;
printf("Enter name: ");
scanf ("%[^\n]%*c", s1.name);
printf("Enter age: ");
scanf("%d", &s1.age);
return s1;
}
Hier die getInformation()
Die Funktion wird mit s = getInformation();
aufgerufen Aussage. Die Funktion gibt eine Struktur vom Typ struct student
zurück . Die zurückgegebene Struktur wird aus dem main()
angezeigt Funktion.
Beachten Sie, dass der Rückgabetyp getInformation()
ist ist auch struct student
.
Struct als Referenz übergeben
Sie können Strukturen auch per Referenz übergeben (ähnlich wie Sie Variablen des eingebauten Typs per Referenz übergeben). Wir empfehlen Ihnen, das Referenz-Tutorial zu lesen, bevor Sie fortfahren.
Bei der Referenzübergabe werden die Speicheradressen von Strukturvariablen an die Funktion übergeben.
#include <stdio.h>
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,\n");
printf("Enter real part: ");
scanf("%f", &c1.real);
printf("Enter imaginary part: ");
scanf("%f", &c1.imag);
printf("For second number, \n");
printf("Enter real part: ");
scanf("%f", &c2.real);
printf("Enter imaginary part: ");
scanf("%f", &c2.imag);
addNumbers(c1, c2, &result);
printf("\nresult.real = %.1f\n", 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
For first number, Enter real part: 1.1 Enter imaginary part: -2.4 For second number, Enter real part: 3.4 Enter imaginary part: -3.2 result.real = 4.5 result.imag = -5.6
Im obigen Programm drei Strukturvariablen c1 , c2 und die Adresse von Ergebnis wird an addNumbers()
übergeben Funktion. Hier Ergebnis wird als Referenz übergeben.
Wenn das Ergebnis Variable innerhalb des addNumbers()
geändert wird, das Ergebnis Variable innerhalb des main()
Funktion wird ebenfalls entsprechend geändert.
C Sprache