IOS开发之路-C 学习笔记7.19

今天主要是复习了下之前学习的东西,加深一些新的理解,以及一些新的认识.

不过看了视频,也学到了一个比较好用的东西--指向函数的指针

首先定义一个函数

int sum(int a , int b )
{
    return a+b;
}

之后在main中定义一个函数指针,最简单的方法为复制函数的声明.然后把函数名换为*指针名,并且只保留数据类型不用变量.

定义如下.

 int (*p)(int  , int );
需要注意的是*p必须到括号的.
之后还需要把指针指向函数,实际上就等于指针名指向函数名.

p = sum;

之后调用这个指向指针的函数.

我直接输出

( *p)(5,6)
同下面效果一样.

    printf("%d",p(5,6));

结果为11.



可是如果这样写不是反正不省事,更加复杂了吗?

指针函数到底有什么作用呢?

如果我们要计算的不仅仅是加法运算呢?

可不可以输入两个数,然后再输入一个运算类型来返回结果呢?

上面刚说过*p可以指向函数.那么我们可以用指针来指向函数来引用啊.

我们知道函数不仅可以传变量,常量,表达式外,指针也可以,就上道题而言,如果我们用传指针来计算呢?

那么我们再写一个函数 calculate 

int calculate(int a, int b , int (*p)(int, int))
{
    return p(a,b);
}
calculate函数是用来对a和b进行计算的,至于做什么运算.取决与p.

之后在输出看看

printf("%d",calculate(5, 6, sum));

结果也是11.

那么这里函数指针的作用就出来了.

我们要写其他运算的话,只需要在写几个方法就好了

int sum(int a , int b )
{
    return a+b;
}
int sub(int a, int b)
{
    return a-b;
}
int mul(int a, int b)
{
    return a*b;
}
int divi(int a, int b)
{
    return a/b;
}
int ram(int a, int b)
{
    return a%b;
}

这样我们调用的时候,只需要在calculate里面改变指针p所指向的函数就可以进行不同的运算,

其实calculate里面的

int (*p)(int a, int b) 

就等同于 p = sum or p = ram..... 等等.


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值