当前位置:嗨网首页>书籍在线阅读

17-传递结构成员

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.7.1 传递结构成员

只要结构成员是一个具有单个值的数据类型(即, int 及其相关类型、 charfloatdouble 或指针),便可把它作为参数传递给接受该特定类型的函数。程序清单14.5中的财务分析程序(初级版本)演示了这一点,该程序把客户的银行账户添加到他/她的储蓄和贷款账户中。

程序清单14.5  funds1.c 程序

/* funds1.c -- 把结构成员作为参数传递 */
#include <stdio.h>
#define FUNDLEN 50
struct funds {
     char      bank[FUNDLEN];
     double    bankfund;
     char      save[FUNDLEN];
     double    savefund;
};
double sum(double, double);
int main(void)
{
     struct funds stan = {
          "Garlic-Melon Bank",
          4032.27,
          "Lucky's Savings and Loan",
          8543.94
     };
     printf("Stan has a total of $%.2f.\n",
          sum(stan.bankfund, stan.savefund));
     return 0;
}
/* 两个double类型的数相加 */
double sum(double x, double y)
{
     return(x + y);
}

运行该程序后输出如下:

Stan has a total of $12576.21.

看来,这样传递参数没问题。注意, sum() 函数既不知道也不关心实际的参数是否是结构的成员,它只要求传入的数据是 double 类型。

当然,如果需要在被调函数中修改主调函数中成员的值,就要传递成员的地址:

modify(&stan.bankfund);

这是一个更改银行账户的函数。

把结构的信息告诉函数的第2种方法是,让被调函数知道自己正在处理一个结构。