C语言函数指针

函数指针——是一个指向函数的指针

https://www.runoob.com/cprogramming/c-fun-pointer-callback.html

#include <stdio.h>

int max(int x, int y)
{
    return x > y ? x : y;
}

int main(void)
{
    /* p 是函数指针 */
    //(*p)是一个整体
    //(*p)左边是和函数同样类型的返回值类型int
    //(*p)右边是
    int (*p)(int, int) = &max; // &可以省略
    //下面这个(*p1)也是个函数指针,指向同一地址
    int (*p1)(int, int) = &max;
    int a, b, c, d;
    //这个&max还是地址,因为地址是16进制的,
    printf("%d\n", &max);
    printf("%p\n", &max);
    printf("%p\n", *p);
    printf("%p\n", p);
    printf("%p\n", *p1);

    printf("请输入三个数字:");
    scanf("%d %d %d", &a, &b, &c);

    /* 与直接调用函数等价,d = max(max(a, b), c) */
    d = p(p(a, b), c);

    printf("最大的数字是: %d\n", d);

    return 0;
}

解释的有点绕,多包涵。

//声明函数指针首先要有个函数
int sum(int a,double b){
	//TODO 这个TODO就是要干什么的代码,意思是可以在这里写要实现的代码,java自动生成的代码中常见。
	//不知道这个强转int对不对,反正就是这么个意思
	return a>b?a:(int)b;
}

int main(){
	//函数指针类型为函数返回值类型因为sum返回值为int,指针类型也是int
	//(*P)就是函数指针
	//后面的参数跟该指针指向的函数参数类型相同
	//等号后面就是把函数名作为指针指向地址,赋值给指向该函数的指针。
	int (*p)(int a,double b) = &sum; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值