函数指针介绍

·函数指针 可以理解为用 一个指针 来代替多个  返回值类型相同,参数个数相同,参数类型相同(只有函数名不同的)多个函数名

如 int(*) (double,int) 的函数指针类型

int 代表函数的返回值得是int    (double,int)代表函数的参数仅有2个,且类型分别为double 与int

1.函数名的意义

因为单提出函数名代表指向函数的指针,该指针指向函数的最开头

#include<iostream>

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


int main(){  }

add函数名的类型 = int *          即 decltype(add) = int * 

2.函数指针

例:

#include<iostream>

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

int plus(int a,int b)   {    return a*b;  }
int main()   {    }

add 函数 和 plus 函数拥有相同的上述三个 可以用一类函数指针来接受他们

即 int (*) (int,int)  == decltype(add)

    int (*) (int,int)  == decltype(plus)

#include<iostream>
using namespace std;

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

int mult(int a,int b)
{
    return a*b;
}

int main()
{
    int (*func) (int,int);  // int (*) (int,int) 为一个函数指针类型  定义func变量
    //可以用func代替add,plus 等一系列函数 
    func = add;
    cout<<func(10,10)<<endl;
    func = mult;
    cout<<func(10,10)<<endl;
}   //编译成功 成功输出

注:返回值类型相同,参数个数相同,参数类型相同只要有一个与函数指针不相同 都不能用该函数指针

#include<iostream>
using namespace std;

double add1(int a,int b) //Error! 
int add(double a,int b) //Error!

int add2(int a ,int b ,int c) //Error
int add3(int a) //Error
 

int main()
{
    int (*func) (int,int);
    func = add; //Error
    func = add1; //Error

    func =add2;//Error

    func =add3; //Error
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值