C语言 结构体作为函数的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 结构体作为函数的参数相关的知识,希望对你有一定的参考价值。

1)使用结构体变量作为函数的参数

  使用结构体变量作为函数的实参时,采用的是值传递,会将结构体变量所占内存单元的内容全部顺序传递给形参,形参必须是同类型的结构体变量

demo:

 1 # include <stdio.h>
 2 # include <stdlib.h>
 3 
 4 //创建一个Student结构 
 5 struct Student
 6 {
 7     char name[30];
 8     float fScore[3];
 9 }student={"dire",98.5,89.0,93.5}; //初始化结构体变量 
10 
11 void Display(struct Student su) //形参为同类型的结构体(Student结构) 
12 {
13     printf("-----Information------\n");
14     printf("Name:%s",su.name);
15     printf("Chinese:%.2f\n",su.fScore[0]);
16     printf("Math:%.2f\n",su.fScore[1]);
17     printf("English:%.2f",su.fScore[2]);
18     printf("平均分数为:%.2f\n",(su.fScore[0]+su.fScore[1],su.fScore[2])/3);
19 }
20 
21 int main ()
22 {
23     
24     Display(student);
25     
26     return 0;
27  } 

Printf:

技术分享


2)使用指向结构体变量的指针作为函数参数

Demo:

 1 # include <stdio.h>
 2 # include <stdlib.h>
 3 
 4 struct Student {
 5     char name[20];
 6     float fScore[3];
 7 }student = {"dire",98.5,89.0,93.5}; //初始化结构体变量 
 8 
 9 
10 void Display(struct Student *pStruct)
11 {
12     printf("------Information-------\n");
13     printf("Name:%s\n",pStruct->name);
14     printf("Chinese:%.2f\n",(*pStruct).fScore[0]);
15     printf("Math:%.2f\n",(*pStruct).fScore[1]);
16     printf("English:%.2f\n",pStruct->fScore[2]);
17 }
18 
19 
20 int main ()
21 {
22     Display(&student);        //将结构体变量的首地址作为实参传入pStruct指针变量中 
23     
24     return 0;
25 } 

3)使用结构体变量的成员作为函数参数

  这种方式为函数传递参数与普通的变量作为实参是一样的,是值传递

 

以上是关于C语言 结构体作为函数的参数的主要内容,如果未能解决你的问题,请参考以下文章

C 语言结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )

如何将不同类型的结构体作为一个函数的参数?

C 语言结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

C语言中,结构体作为函数参数传递,详解?

结构体作为函数参数值传递的问题

C 语言结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )