C第10章-----通过引用传递

#include <stdio.h>

#include <math.h>

 

void metersToFeetAndInches(double meters,unsigned int *ftPtr,double *inPtr){

    //这个函数假定meters的值是非负数

    

    //将meters变量的值转化为feet的值,类型为浮点数

    double rawFeet = meters * 3.281;  //e.g. 2.4536

    printf("rawFeet: %lf\n", rawFeet);

    

    //计算类型为无符号的整形的feet变量的值

    unsigned int feet = (unsigned int)floor(rawFeet);

    printf("ftPtr: %p\n", ftPtr);

    printf("*ftPtr: %d\n", *ftPtr);

    

    //将feet变量的值存储在提供的地址里

    //先检查指针是否为NULL

    if(ftPtr){

        printf("------------------------------------------\n");

        printf("Storing %u to the address %p\n",feet ,ftPtr);

        *ftPtr = feet;

        printf("ftPtr: %p\n", ftPtr);

        printf("*ftPtr: %d\n", *ftPtr);

    }

    

    //计算英寸

    double fractionalFoot = rawFeet - feet;

    double inches = fractionalFoot * 12.0;

    printf("fractionalFoot: %lf\n", fractionalFoot);

    printf("inches: %lf\n", inches);

    

    printf("------------------------------------------\n");

    //将inches变量的值保存到传入的地址

    //先检查指针是否为NULL

    if(inPtr){

        printf("Storing %.2f to the address %p\n", inches, inPtr);

        *inPtr = inches;

        printf("inPtr: %p\n", inPtr);

        printf("*inPtr: %lf\n", *inPtr);

    }

    

}

 

int main(int argc, const char * argv[]) {

    

    double meters = 3.0;

    unsigned int feet;

    double inches;

    

    metersToFeetAndInches(meters, &feet, &inches);

    printf("%.1f meters is equal to %d feet and %.1f inches.",meters,feet,inches);

    return 0;

}

 

结果:

rawFeet: 9.843000

ftPtr: 0x7ffeefbff514

*ftPtr: 0

------------------------------------------

Storing 9 to the address 0x7ffeefbff514

ftPtr: 0x7ffeefbff514

*ftPtr: 9

fractionalFoot: 0.843000

inches: 10.116000

------------------------------------------

Storing 10.12 to the address 0x7ffeefbff508

inPtr: 0x7ffeefbff508

*inPtr: 10.116000

3.0 meters is equal to 9 feet and 10.1 inches.Program ended with exit code: 0

 

转载于:https://www.cnblogs.com/turningli/p/10695825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值