C- 函数与指针

C- 函数与指针

  • 基本点
    • 函数类型
      • C语言中函数有自己的特定类型
      • 函数的类型由返回值,参数类型和参数个数和参数顺序决定
      • int add(int i, char j) 的类型为 int(int, char)
    • typedef来定义函数类型
      • 语法: typedef type name(parameter list)
      • 例如 typedef int f(int, int) -> f为函数类型 int(int, int)
      • typedef void p(int) -> p为函数类型 void(int)
    • 函数指针
      • 函数指针用于指向一个函数
      • 函数名是执行函数体的入口地址
      • 可以通过函数类型定义函数指针: FuncType* pointerFunc
      • 还可以间接定义函数指针: type (*pointerFunc)(parameter, list)

范例程序:
通过下面程序可以看出:
1. 函数的函数名代表一个地址
2. 在将函数名赋值给函数指针时 &FuncName 与 FuncName 没什么区别
3. 在利用函数指针调用函数时, pf(); 与 (*pf)() 相同

    #include <stdio.h> 

    typedef int (Func)(int);

    int test(int i)
    {
        return i*i;
    }

    void f()
    {
        printf("Call f()...\n");
    }

    int main()
    {
        Func* pt = test; 
        void (*pf)() = &f;

        (*pf)();
        pf();

        printf("By Func's pointer call Function test() and result is %d\n", pt(2));

        return 0;
    }
  • 回调函数
    • 回调函数时利用函数指针实现调用的一种机制
    • 为何要用回调函数(回调原理)
      • 调用者不知道具体时间发生的时候它调用什么样的函数
      • 被调函数也不知道会被谁调用,它只知道要完成一个任务
    • 可以看出,回调机制将调用者和被调函数分开, 进行了解耦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值