您的位置:首页 > 其它

指向函数的指针与返回指针值的函数

2013-08-21 14:22 211 查看

http://hi.baidu.com/passerryan/item/99aebc3ab57f3d8df5e4ad39

1、指向函数的指针

定然形式为: 数据类型 (*指针变量名)(); 例如:int (*p)(); 定义P是一个指向函数的指针变量,此函数带回整型的返回值。若写成 int *p(); 它就声明了一个函数,函数的返回值是指向整型变量的指针。在int (*p)(); 的定义中,(*p) 和函数名是等价的。

函数指针变量常用的用途之一是把指针作为参数传递到其他函数。

2、返回指针值的函数

定义形式为:类型名 *函数名(参数表列)例如:int *a(int x, int y); a是函数名,调用它以后能得到一个指向整型数据的指针。

3、有关指针的数据类型的小结

int i; 定义整型变更;

int *P p为指向整型数据的指针变量

int a
定义一个数组a,它有n 个变量

int *p
定义一个指针数组,即数组里存放的都是指向整型元素的指针

int (*p)
定义一个指向数组的指针变量

int f() 定义一个返回值为整型的函数

int *p() 定义一个函数,该函数返回一个指向整型元素的指针变量

int (*p)() 指向函数的指针,该函数返回一个整型值

int **p p是一个指针变量,它指向一个指向整型数据的指针变量

返回指向函数的指针 例:

在C++ primer 238页中出现的int(*ff(int))(int*,int) ,解释为:

ff(int)是一个函数,带有一个int型的形参,所以,这个首先是一个函数。如下面例子中的int (*funOne(int number))(int a, int b)的funOne(int number).

其返回的使int (*)(int*,int)的函数指针,这个函数指针如下文中的int funtwo(int a,int b),funtwo本身就是一个指针。

#include <iostream>

using namespace std;

int funTwo(int a, int b)

{

return a * b;

}

// funOne是一个函数,带有一个int型参数,它返回一个指向函数的指针

// 这个指向函数的指针指向一个返回int型,并带有两个int型的形参的函数

int (*funOne(int number))(int a, int b)

{

return funTwo;

}

int main()

{

cout << funOne(1)(3, 10) << endl;

return 0;

}

----------

OutPut:



对于上文的funcOne(int number)(int int)我们可以如下方式引用:

typedef int (*PF)(int, int); //申明函数指针

PF ff(int);

// ff returns a pointer to function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐