Dans ce didacticiel, vous apprendrez à transmettre des variables struct en tant qu'arguments à une fonction. Vous apprendrez à renvoyer une structure à partir d'une fonction à l'aide d'exemples.
À l'instar des variables de types intégrés, vous pouvez également transmettre des variables de structure à une fonction.
Passer des structures aux fonctions
Nous vous recommandons d'apprendre ces didacticiels avant d'apprendre à transmettre des structures aux fonctions.
- Structures en C
- Fonctions C
- Fonction définie par l'utilisateur
Voici comment passer des structures à une fonction
#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); )
Production
Entrez le nom: Bond Entrez l'âge: 13 Affichage des informations Nom: Bond Âge: 13
Ici, une variable struct s1 de type struct student
est créée. La variable est transmise à la display()
fonction à l'aide de l' display(s1);
instruction.
Renvoyer une structure depuis une fonction
Voici comment vous pouvez renvoyer une structure à partir d'une fonction:
#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; )
Ici, la getInformation()
fonction est appelée using s = getInformation();
statement. La fonction renvoie une structure de type struct student
. La structure retournée est affichée à partir de la main()
fonction.
Notez que le type de retour getInformation()
est également struct student
.
Passer une structure par référence
Vous pouvez également passer des structures par référence (de la même manière que vous passez des variables de type intégré par référence). Nous vous suggérons de lire le tutoriel passe par référence avant de continuer.
Lors du passage par référence, les adresses mémoire des variables struct sont passées à la fonction.
#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; )
Production
Pour le premier nombre, entrez la partie réelle: 1.1 Entrez la partie imaginaire: -2.4 Pour le deuxième nombre, entrez la partie réelle: 3.4 Entrez la partie imaginaire: -3.2 result.real = 4.5 result.imag = -5.6
Dans le programme ci-dessus, trois variables de structure c1, c2 et l'adresse du résultat sont transmises à la addNumbers()
fonction. Ici, le résultat est passé par référence.
Lorsque la variable de résultat à l'intérieur de addNumbers()
est modifiée, la variable de résultat à l'intérieur de la main()
fonction est également modifiée en conséquence.