English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base du langage C

Contrôle de flux du langage C

Fonctions en langage C

Tableaux en langage C

Pointeurs en langage C

Chains de caractères en langage C

Structure de langage C

Fichier du langage C

Autres C

Référence du langage C

Structures et fonctions en C

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.

Transmettre une 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().

Retour d'une structure à partir d'une fonction

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.

Transmettre la structure par référence

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.