指针函数和函数指针(C语言)

指针函数和函数指针(C语言)

指针函数

指针函数就是指针型函数,该函数返回一个地址。

#include <stdio.h>
//指针函数*point_fuc()
int *point_fuc(int a,int b,int *sum)
{
    *sum = a+b;
    return sum;//返回sum的地址
}
int main(void)
{
    int sum;
    printf("一开始sum的地址和值:%p,%d\n",&sum,sum);
    int *p = point_fuc(1,5,&sum);//用指针p指向sum的地址
    printf("返回值后sum的值=%d,和sum的地址=%p\n",sum,&sum);
    printf("用指针p来看返回值后sum的值=%d,和sum的地址=%p\n",*p,p);
    return 0;
}

可以把该函数point_fuc()抽象成普通的指针point_fuc。在函数内部运行完函数内的代码并返回一个地址,则point_fuc()就相当于普通指针point_fuc取地址的样子。在上面代码里,可以抽象为普通指针时的样子:

指针函数:

int *point_fuc(int a,int b,int *sum)
{
    *sum = a+b;
    return sum;//返回sum的地址
}
int *p = point_fuc(1,5,&sum);//传給指针p的地址就是函数里return的

抽象成普通指针:

int *point_fuc;
int *p = point_fuc;//将指针point_fuc指向的地址传给指针p

函数指针

函数指针就是函数型指针。通过函数指针指向一个函数,然后就可以通过该指针传递参数给它所指向的函数,并返回值。

#include <stdio.h>
//普通函数one(int c,int d)
int one(int c,int d)
{
    int sum;
    sum = c+d;
    return sum;
}

//普通函数mul(int c,int d)
int mul(int c,int d)
{
    int multiplication;
    multiplication = c*d;
}
int main(void)
{
//函数指针(*fuc_point)(int,int)
    int (*fuc_point)(int,int);//创建函数指针fuc_point
    fuc_point = one;//函数指针fuc_point指向one函数
    int main_sum = fuc_point(15,25);//通过函数指针fuc_point给one函数传值
    printf("main_sum=%d\n",main_sum);
    fuc_point = mul;//将函数指针fuc_point转为指向mul函数
    int multip = fuc_point(15,25);//通过函数指针fuc_point给mul函数传值
    printf("multip=%d\n",multip);
    return 0;
}

利用函数指针来传值给函数并返回值,相对于直接调用函数并返回值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值