函数中指针作为实参的作用与意义

        因为C语言用值进行参数传递,所以在函数调用中用作实际参数的变量无法改变。当希望函数能够改变变量时,C语言这种用值进行参数传递的特性就很讨厌了。

        所以指针提供了此问题的解决方法:不在传递变量x作为函数的实际参数,而是提供x的地址,即&x。

#include <stdio.h>

void decompose(double x, int *int_pare, double *frac_part)
{
    *int_part = (int)x;
    *frac_part = x - *int_part;
}
int main()
{
    int i = 0;
    double d = 0;
    printf("调用函数之前:i:%d d:%lf\n", i, d);
    decompose(3.14,&i,&d);
    printf("调用函数之后:i:%d d:%lf\n", i, d);
    
    return 0;
}

因为i和d前有取地址运算符&,所以decompose函数的实际参数是指向i和d的指针,而不是i和d的值。

        用指针作为函数的实际参数并不新鲜,实际上我们很早就已经在scanf函数调用中使用过了

例如:scanf(“%d”, &i);

        必须把&放在i的前面以便给scanf函数传递指向i的指针,指针会告诉scanf函数把读取的值放在哪里。如果没&运算符,传递给scanf函数的将是i的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值