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)使用结构体变量的成员作为函数参数
这种方式为函数传递参数与普通的变量作为实参是一样的,是值传递