如何在C语言中将整个结构体作为参数传递给函数?


将结构体中的值从一个函数传递到另一个函数,有三种方法。它们如下所示:

  • 将各个成员作为参数传递给函数。

  • 将整个结构体作为参数传递给函数。

  • 将结构体的地址作为参数传递给函数。

现在让我们看看如何将整个结构体作为参数传递给函数。

  • 结构体变量的名称作为参数在函数调用中给出。

  • 它在函数头中被收集到另一个结构体变量中。

  • 缺点是会再次创建整个结构体的副本,从而浪费内存。

示例

以下程序展示了如何将整个结构体作为参数传递给函数。

 在线演示

#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
",d.day);    printf("month=%s
",d.month);    printf("year=%d
",d.year); }

输出

当执行上述程序时,它会产生以下结果:

enter the day, month and year:18 JAN 2021
day=18
month=JAN
year=2021

示例 2

考虑另一个示例,其中解释了 C 程序来演示将整个结构体作为参数传递给函数。

 在线演示

#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);
}

输出

当执行上述程序时,它会产生以下结果:

Enter variable 1 = 20
Enter variable 2 = 50
Added value is 70

示例 3

另一个 C 程序演示了将整个结构体作为参数传递给函数,其中解释了声明结构体、声明和返回函数等。

 在线演示

#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
",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); }

输出

当执行上述程序时,它会产生以下结果:

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

更新于: 2021年3月24日

3K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告