函数指针
维基百科,自由的百科全书
| 本条目没有列出任何参考或来源。(2012年5月5日) |
函数指针是一种在C、C++、D语言、其他类 C 语言和Fortran 2003中的指针。函数指针可以像一般函数一样,用于调用函数、传递参数。在如 C 这样的语言中,通过提供一个简单的选取、执行函数的方法,函数指针可以简化代码。
函数指针只能指向具有特定特征的函数。因而所有被同一指针运用的函数必须具有相同的参数和返回类型。
C/C++编程语言 [编辑]
以下为函数指针在C/C++中的运用
/* 例一:函数指针直接调用 */ # ifndef __cplusplus # include <stdio.h> # else # include <cstdio> # endif int max(int x, int y) { return x > y ? x : y; } int main(void) { /* p 是函数指针 */ int (* p)(int, int) = & max; int a, b, c, d; printf("please input 3 numbers:"); scanf("%d %d %d", & a, & b, & c); /* 与直接调用函数等价,d = max(max(a, b), c) */ d = (* p)(( *p)(a, b), c); printf("the maxumum number is: %d\n", d); return 0; }
/* 例二:函数指针作为参数 */ struct object { int data; }; int object_compare(struct object * a,struct object * z) { return a->data < z->data ? 1 : 0; } struct object *maximum(struct object * begin,struct object * end,int (* compare)(struct object *, struct object *)) { struct object * result = begin; while(begin != end) { if(compare(result, begin)) { result = begin; } ++ begin; } return result; } int main(void) { struct object data[8] = {{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}}; struct object * max; max = maximum(data + 0, data + 8, & object_compare); return 0; }