Maison > développement back-end > C++ > le corps du texte

Comment passer toute la structure en paramètre pour fonctionner en langage C ?

WBOY
Libérer: 2023-09-06 08:53:06
avant
1148 Les gens l'ont consulté

Comment passer toute la structure en paramètre pour fonctionner en langage C ?

Il existe trois façons de transmettre la valeur d'une structure d'une fonction à une autre. Ils ressemblent à ceci :

  • Passer un seul membre en paramètre à une fonction.

  • Passez la structure entière en paramètre à la fonction.

  • Passez l'adresse de la structure en paramètre à la fonction.

Voyons maintenant comment passer la structure entière en paramètre à une fonction.

  • Donnez le nom de la variable de structure en argument dans l'appel de la fonction.

  • Collectez-le dans une autre variable de structure dans l'en-tête de la fonction.

  • L'inconvénient est que cela gaspille de la mémoire et crée à nouveau une copie de la structure entière.

Exemple

Le programme suivant montre comment transmettre une structure entière en tant que paramètre à une fonction.

Démonstration

#include<stdio.h>
struct date{
   int day;
   char month[10];
   int year;
};
int main(){
   struct date d;
   printf("enter the day,month and year:");
   scanf("%d%s%d",&d.day,d.month,&d.year);
   display(d);//passing entire structure as an argument to function
   return 0;
}
void display(struct date d){
   printf("day=%d</p><p>",d.day);
   printf("month=%s</p><p>",d.month);
   printf("year=%d</p><p>",d.year);
}
Copier après la connexion

Sortie

Lorsque le programme ci-dessus est exécuté, il produit le résultat suivant −

enter the day, month and year:18 JAN 2021
day=18
month=JAN
year=2021
Copier après la connexion

Exemple 2

Considérons un autre exemple, dans cet exemple, il est expliqué comment un programme C prend une structure entière comme paramètre passé à la fonction.

Démo en ligne

#include<stdio.h>
//Declaring structure//
struct add{
   int var1;
   int var2;
}a;
//Declaring and returning Function//
void show(struct add a){
   //Declaring sum variable//
   int sum;
   //Arithmetic Operation//
   sum=a.var1+a.var2;
   //Printing O/p//
   printf("Added value is %d",sum);
}
void main(){
   //Declaring structure//
   struct add a;
   //Reading User I/p//
   printf("Enter variable 1 = ");
   scanf("%d",&a.var1);
   printf("Enter variable 2 = ");
   scanf("%d",&a.var2);
   //Calling function//
   show(a);
}
Copier après la connexion

Output

Lorsque le programme ci-dessus est exécuté, il produit le résultat suivant −

Enter variable 1 = 20
Enter variable 2 = 50
Added value is 70
Copier après la connexion

Exemple 3

Il s'agit d'un autre programme C qui démontre la méthode de transmission de la structure entière en tant que paramètre à une fonction , où la déclaration des structures, la déclaration et le retour des fonctions, etc. sont expliquées.

Démo en ligne

#include<stdio.h>
//Declaring structure//
struct student{
   int s1,s2,s3;
}s[5];
//Declaring and returning Function//
void addition(struct student s[]){
   //Declaring sum variable and For loop variable//
   int i,sum;
   //Arithmetic Operation//
   for(i=1;i<4;i++){
      sum=s[i].s1+s[i].s2+s[i].s3;
      printf("Student %d scored total of %d</p><p>",i,sum);
   }
}
void main(){
   //Declaring variable for For loop//
   int i;
   //Reading User I/p through For loop//
   for(i=1;i<4;i++){
      printf("Enter marks for student %d in subject 1 = ",i);
      scanf("%d",&s[i].s1);
      printf("Enter marks for student %d in subject 2 = ",i);
      scanf("%d",&s[i].s2);
      printf("Enter marks for student %d in subject 3 = ",i);
      scanf("%d",&s[i].s3);
   }
   //Calling function//
   addition(s);
}
Copier après la connexion

Output

Lorsque le programme ci-dessus est exécuté, il produit les résultats suivants −

Enter marks for student 1 in subject 1 = 25
Enter marks for student 1 in subject 2 = 89
Enter marks for student 1 in subject 3 = 45
Enter marks for student 2 in subject 1 = 12
Enter marks for student 2 in subject 2 = 45
Enter marks for student 2 in subject 3 = 89
Enter marks for student 3 in subject 1 = 12
Enter marks for student 3 in subject 2 = 78
Enter marks for student 3 in subject 3 = 12
Student 1 scored total of 159
Student 2 scored total of 146
Student 3 scored total of 102
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal