C语言初阶:函数,函数指针解决实际问题

文章目录1. 函数指针1. 函数指针函数名就是一个地址,所以函数名就能放在指针中定义指针的方法:void (*p)() = Func;调用函数指针的方法:(*p)(); 或者 p();和数组的道理一样有参数和有返回值的调用函数指针:int (*padd)(int a,int b) = add;printf("%d\n",padd(100,200));或者 printf("%d\n",(*padd)(100,200));体会函数指针的用法:#include <stdio.h&
摘要由CSDN通过智能技术生成

1. 函数指针

函数名就是一个地址,所以函数名就能放在指针中

定义指针的方法:
void (*p)() = Func;

调用函数指针的方法:
(*p)(); 或者 p();
和数组的道理一样

有参数和有返回值的调用函数指针:
int (*padd)(int a,int b) = add;
printf("%d\n",padd(100,200));
或者 printf("%d\n",(*padd)(100,200));

体会函数指针的用法:

#include <stdio.h>
void Func(){
   
        printf("Hello World\n");
}

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

int main(){
   
        Func();
        printf("%p\n",Func);
        printf("%p\n",&Func);

        void (*p)() = Func;  //p就是函数指针
        (*p)();
        p();
        // ()运算符 ==>  Func() p()

        int arr[3];
        int* parr = arr;
        // []运算符 ==>  arr[i] parr[i]

        int (*padd)(int a,int b) = add;

        printf("%d\n",padd(100,200));
        printf("%d\n",(*padd)(100,200));
}

结果为:

Hello World
0x4005d6
0x4005d6
Hello World
Hello World
300
300

对于函数指针,可以理解为 int (*padd)(int a,int b) ===> int add(int a,int b)

2. 函数指针传入函数和函数指针组成指针数组

使用函数指针传入函数,多个函数指针组成指针数组,做加减乘除运算:

#include <stdio.h>
int add(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 div(int a,int b){
   
        return a/b;
}

int cal(int (*padd)(int,int),int a,int b){
   
        return padd(a,b);
}

int main(){
   
        int
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值