首页 理论教育C语言程序设计实用教程:结构体与函数的实例

C语言程序设计实用教程:结构体与函数的实例

【摘要】:图7.8程序运行结果说明:程序中定义了函数ave,其形参为结构体指针变量ps。boy 被定义为外部结构体数组,在整个源程序中有效。

结构体变量的成员项、结构体变量和结构体指针都可以作为函数的参数来应用。

1.结构体变量的成员作为函数参数

由于结构体变量的成员存放的是基本数据类型的数据,这种情况同普通变量作为函数参数一样,是值传递方式。函数调用时,需要注意实参与形参的数据类型要保持一致。

2.结构体变量作为函数参数

结构体变量作实参时,采取的是值传递方式,将结构体变量所占的内存单元内容全部顺序传递给形参。形参必须是同类型的结构体变量。在函数调用期间形参也要占用内存单元,这种传递方式在空间和时间上的开销较大,程序执行效率较低。因此,这种方式较少使用。

3.结构体指针或结构体数组名作为函数参数

结构体指针或结构体数组名作为函数参数与普通指针或数组名作为函数参数类似,实现的是地址传递。这时由实参传向形参的只是地址,从而减少了时间和空间的开销。

【例7.7】计算一组学生的平均成绩和不及格人数,用结构体指针变量作函数参数编程。程序如下:(www.chuimin.cn)

程序运行结果如图7.8 所示。

图7.8 程序运行结果

说明:程序中定义了函数ave,其形参为结构体指针变量ps。boy 被定义为外部结构体数组,在整个源程序中有效。在主函数main 中定义说明了结构体指针变量ps,并把boy 的首地址赋予ps,使ps 指向boy 数组。然后以ps 作实参调用函数ave。在函数ave 中计算平均成绩,统计不及格人数,并输出结果。

由于全部采用指针变量作运算和处理,速度快,程序效率更高。