C Structure et fonction
Structure et fonction C
Dans ce didacticiel, vous apprendrez à passer des variables de structure en tant qu'arguments à une fonction. Vous apprendrez à renvoyer une structure à partir d'une fonction à l'aide d'exemples.
Comme pour les variables de types intégrés, vous pouvez également passer des variables de structure à une fonction.
Passer des structures aux fonctions
Nous vous recommandons de suivre ces didacticiels avant d'apprendre à transmettre des structures à des fonctions.
- Structures C
- Fonctions C
- Fonction définie par l'utilisateur
Voici comment passer des structures à une fonction
#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);
}
Sortie
Enter name: Bond Enter age: 13 Displaying information Name: Bond Age: 13
Ici, une variable de structure s1 de type struct student
est créé. La variable est passée au display()
fonction utilisant display(s1);
déclaration.
Renvoyer la structure d'une fonction
Voici comment renvoyer la structure d'une fonction :
#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;
}
Ici, le getInformation()
la fonction est appelée en utilisant s = getInformation();
déclaration. La fonction renvoie une structure de type struct student
. La structure retournée est affichée à partir du main()
fonction.
Notez que le type de retour de getInformation()
est aussi 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 Pass by reference avant de continuer.
Lors du passage par référence, les adresses mémoire des variables de structure sont transmises à la fonction.
#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;
}
Sortie
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
Dans le programme ci-dessus, trois variables de structure c1 , c2 et l'adresse du résultat est passé au addNumbers()
fonction. Ici, résultat est passé par référence.
Lorsque le résultat variable à l'intérieur du addNumbers()
est modifié, le résultat variable à l'intérieur du main()
la fonction est également modifiée en conséquence.
Langue C