天天看点

函数指针和指针函数

一、函数指针与指针函数

函数指针和指针函数
函数指针和指针函数

说明:

函数指针,即其本质是一个指针,它是一个指向函数的指针变量。

指针函数,即其本质是一个函数,返回的是某一类型的指针。

值得注意的是:max函数的入口地址类型应该为:(int*)(int,int)。

输出结果:

函数指针和指针函数

二、定义如下几种类型变量

1、含有10个元素的指针数组

int *a[10];

2、数组指针

int *a=new int[10];

3、函数指针

void (*fn)(int,int);

4、指向函数的指针数组

int (*fnarray[10])(int,int);

三、函数指针数组

函数指针和指针函数
函数指针和指针函数

第5、6行,声明两个函数,有两个int型形参,返回值为int型。

第12行,定义一个函数指针数组,数组有两个元素,都是函数指针,指向一个有两个int型形参,返回值为int型的函数。

第13、14行,数组的第一个指针op[0],指向add1函数入口,数组的第二个指针op[1],指向add2函数入口。

第15、16行,c++形式输出,需要注意的是*op[0]需要加括号,表示一个函数指针,才能正确输出,否则编译出错。

第17、18行,c形式输出。

四、typedef用于函数指针定义

如下面程序:

typedef int(*pfun)(int x,int y);    //定义了pfun类型,表示一个函数指针

int fun(int x,int y);               //声明一个函数

pfun p = fun;        //定义一个pfun类型的函数指针p,并赋予了函数fun的入口地址,注意,这里p前面没有*

int ret = p(2,3);    //利用p调用fun函数,注意,这里p前面没有*