结构作为函数参数的三种传递方式

结构作为函数参数的三种传递方式

======================================
- 结构作为函数参数的三种方式

  • 1.传递结构成员
  • 2.传递结构
  • 3.传递结构的地址
    ===================================
//1.传递结构成员
#include <stdio.h>
#include <stdlib.h>

//花呗还款简单举例
struct account
{
    char * bankName;    //银行名称
    char * userName;    //用户名称
    double limit;       //账户当前可用额度
    double max;         //账户总额度
};

//计算并返回当月应还款数
double payFor(double m1,double m2)
{
    return m2-m1;
}

int main()
{
    //初始化数据
    struct account BOC;
    BOC.bankName="中国银行";
    BOC.userName="马小云";
    BOC.max=10000;
    BOC.limit=1562;
    double result=payFor(BOC.limit,BOC.max);
    printf("用户应还款%.2lf元,截至下月9日之前不算利息!\n",result);
}

//2.传递结构
//结构体定义不变,后面照下面修改
//计算并返回当月应还款数
double payFor(struct account accounts)
{
    return accounts.max-accounts.limit;
}

int main()
{
    //初始化数据
    struct account BOC;
    BOC.bankName="中国银行";
    BOC.userName="马小云";
    BOC.max=10000;
    BOC.limit=1562;
    double result=payFor(BOC);

    printf("用户应还款%.2lf元,截至下月9日之前不算利息!\n",result);
}
//3.传递结构的地址	
//计算并返回当月应还款数
double payFor(const struct account *accounts)    //因为指针指向可以改变,所以此处加上const起保护作用。
{
    return accounts->max-accounts->limit;
}

int main()
{
    //初始化数据
    struct account BOC;
    BOC.bankName="中国银行";
    BOC.userName="马小云";
    BOC.max=10000;
    BOC.limit=1562;
    double result=payFor(&BOC);

    printf("用户应还款%.2lf元,截至下月9日之前不算利息!\n",result);
}

运行结果都如下图:

在这里插入图片描述

posted @ 2019-05-06 22:13  h云淡风轻  阅读(7)  评论(0编辑  收藏  举报  来源