Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

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

  1. Structure C#
  2. Fonction amie C++ et classes amies
  3. Structure C
  4. Structures C et pointeurs
  5. C - Structure du programme
  6. C - Types de données
  7. C - Constantes et littéraux
  8. C-Fonctions
  9. Surcharge C++ (opérateur et fonction)