English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, vous apprendrez à transmettre une variable de structure en tant que paramètre à une fonction. Vous apprendrez également la méthode de retour de struct à partir d'une fonction à l'aide d'exemples.
Comme pour les variables de types intégrés, vous pouvez également transmettre des variables de structure à une fonction.
Nous vous recommandons de lire ces tutoriels avant d'apprendre comment transmettre une structure à une fonction.
Voici la méthode de transmission de la structure à une fonction
#include <stdio.h> struct student { char name[50]; int age; }; //Prototype de la fonction void display(struct student s); int main() { struct student s1; printf("Saisissez le nom : "); //Lecture de la chaîne de caractères saisie par l'utilisateur jusqu'à \n // Le \n est ignoré scanf("%[^\n]%*c",*c", s1.name); printf("Saisissez l'âge : "); scanf("%d", &s1.age); display(s1); //Transmettez la structure en tant que paramètre return 0; } void display(struct student s) { printf("\nAffichage des informations\n"); printf("Nom : %s", s.name); printf("\nÂge : %d", s.age); }
Résultat de la sortie
Entrez le nom : Bond Entrez l'âge : 13 Affichage des informations Nom : Bond Âge : 13
Dans ce cas, une variable de type struct student appelée s a été créée1. Utilisez display(s1)Transmettez la variable à la déclaration de la fonction display().
Voici la méthode de retour d'une structure à partir d'une fonction :
#include <stdio.h> struct student { char name[50]; int age; }; //Prototype de la fonction struct student getInformation(); int main() { struct student s; s = getInformation(); printf("\nAffichage des informations\n"); printf("Nom: %s", s.name); printf("\nNuméro de matricule : %d", s.age)} return 0; } struct student getInformation() { struct student s1; printf("Saisissez le nom : "); scanf("%[^\n]%*c", &s*c", s1.name); printf("Saisissez l'âge : "); scanf("%d", &s1.age); return s1; }
Ici, utilisez s = getInformation() pour appeler la déclaration de la fonction getInformation(). Le fonction retourne une structure de type struct student. Affichez la structure retournée dans la fonction main().
Notez que le type de retour de getInformation() est également struct student.
Vous pouvez également transmettre la structure par référence (comme vous transmettez les variables de types intégrés par référence). Nous vous recommandons de lireRéférenceGuide.
Pendant la transmission par référence, l'adresse de mémoire de la variable de structure est transmise au programme.
#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("Saisissez le premier nombre:\n"); printf("Saisissez la partie réelle : "); scanf("%f", &c1.real); printf("Saisissez la partie imaginaire : "); scanf("%f", &c1.imag); printf("Saisissez le deuxième nombre : "); printf("Saisissez la partie réelle : "); scanf("%f", &c2.real); printf("Saisissez la partie imaginaire : "); 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; }
Résultat de la sortie
Saisissez le premier nombre : Saisissez la partie réelle : 5.8 Saisissez la partie imaginaire : -3.4 Saisissez le deuxième nombre : Saisissez la partie réelle : 9.9 Saisissez la partie imaginaire : -4.5 result.real = 15.7 result.imag = -7.9
Dans le programme ci-dessus, trois variables de structure c1,c2Et l'adresse du résultat est passée à la fonction addNumbers(). Ici, le résultat est passé par référence.
Lorsque la variable de résultat interne de addNumbers() est modifiée, la variable de résultat interne de main() est également modifiée en conséquence.