博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言结构体指针变量作函数参数
阅读量:4297 次
发布时间:2019-05-27

本文共 818 字,大约阅读时间需要 2 分钟。

在ANSI C标准中允许用结构变量作函数参数进行整体传送。但是这种传送要将全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间开销很大,严重地降低了程序的效率。因此最好的办法就是使用指针,即用指针变量作函数参数进行传送。这时由实参传向形参的只是地址,从而减少了时间和空间的开销。

【例11-7】计算一组学生的平均成绩和不及格人数。用结构指针变量作函数参数编程。

struct stu{

    int num;
    char *name;
    char sex;
    float score;
}boy[5]={
    {101,"Li ping",'M',45},
    {102,"Zhang ping",'M',62.5},
    {103,"He fang",'F',92.5},
    {104,"Cheng ling",'F',87},
    {105,"Wang ming",'M',58}
};
main(){
    struct stu *ps;
    void ave(struct stu *ps);
    ps=boy;
    ave(ps);
}
void ave(struct stu *ps){
    int c=0,i;
    float ave,s=0;
    for(i=0;i<5;i++,ps++){
        s+=ps->score;
        if(ps->score<60) c+=1;
    }
    printf("s=%f\n",s);
    ave=s/5;
    printf("average=%f\ncount=%d\n",ave,c);
}

本程序中定义了函数ave,其形参为结构指针变量ps。boy被定义为外部结构数组,因此在整个源程序中有效。在main函数中定义说明了结构指针变量ps,并把boy的首地址赋予它,使ps指向boy数组。然后以ps作实参调用函数ave。在函数ave中完成计算平均成绩和统计不及格人数的工作并输出结果。
由于本程序全部采用指针变量作运算和处理,故速度更快,程序效率更高。

转载地址:http://htcws.baihongyu.com/

你可能感兴趣的文章
suse如何创建定时任务?
查看>>
suse搭建ftp服务器方法
查看>>
centos虚拟机设置共享文件夹并通过我的电脑访问[增加smbd端口修改]
查看>>
CToolBar
查看>>
CMemDC
查看>>
VC资源分配、释放表
查看>>
GDI有用的函数 --- 收集
查看>>
GDI+
查看>>
串口应用: 一种字符串转化为16进制显示的算法
查看>>
VBA代码收集
查看>>
WM_SETCURSOR
查看>>
CRectTracker
查看>>
CWinApp
查看>>
CMenu(弹出式菜单)
查看>>
MFC 工具条 CToolBar : 添加控件
查看>>
VC中基于Windows的精确定时
查看>>
Windows 文件、目录操作编程 常用API
查看>>
实例解说 双缓冲
查看>>
使用zlib库里的compress函数与uncompress函数
查看>>
文件类型及相关打开程序的注册
查看>>