C++之函数指针

这里先介绍一般的函数指针,后序再介绍其他的

函数指针是C++中非常重要的内容,同样的,也是C++难点之一

指针我们都知道,一般我们所用到的都是基本数据类型指针、结构体类型指针、数组指针、对象指针等等,还有一种指针应用广泛,很多地方不可或缺,那便是函数指针,下面介绍的是比较简单点的函数指针

#include<iostream>

using namespace std;

void func(){

cout<<"调用函数func()"<<endl;

}

void set(int a){

int t=a;

cout<<"调用函数set(),t="<<a<<endl;

扫描二维码关注公众号,回复: 561463 查看本文章

}

int get(char op){

int a=10;

if(op=='Y')

return a;

else

return -1;

}

int main()

void (*pc)();

pc=func;    也可以pc=&func;

(*pc)();

void (*p)(int);

p=set;    也可以p=&set;

(*p)(5);

int x,y;

int (*g)(char);

g=get; 也可以g=&get;

x=(*g)('Y');

y=(*g)('N');

cout<<"x="<<x<<"  y="<<y<<endl;

return 0;

}

结果为:

调用函数func()

调用函数set(),t=5

x=10  y=-1

上述给出了基本的函数指针的使用,定义的格式为:

函数返回值类型(*指针名称)(参数列表参数类型),这是最简单的,当然复杂的也只是在这个基础上变化,如果理解清了函数指针的基本构造不难理解更为复杂的函数指针

这里补充点typedef在函数指针中的使用

#include<iostream>

using namespace std;

void func(){

cout<<"调用函数func()"<<endl;

}

typedef void(*pf)();

int main()

{

 void (*p)();

*p=func;

(*p)();

pf a;

a=func;

pf b=func;

(*a)();

(*b)();

return 0;

}

结果为:

调用函数func()

调用函数func()

调用函数func()

很明显此例中typedef定义了一个无参数返回类型为void的函数指针类型,这样简化了后面这种函数指针的定义,更加容易理解,当有非常复杂类型的函数指针等内容理解起来就更加方便容易,而且这是一种新的类型可以多次定义这种类型的函数指针变量

猜你喜欢

转载自blog.csdn.net/hhm853610070/article/details/72886188