函数指针
关于函数指针,三个方面来说明,一是函数指针的调用,二是将函数指针作为参数传入,三是返回函数指针。
1 // ConsoleApplication8.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 7 using namespace std; 8 9 typedef void (*pc)(int, int); 10 typedef int(*point)(int*, int*); 11 12 void print(int i, int j) 13 { 14 cout << i+j << endl; 15 } 16 17 void callPrint(int i,int j,void(*po)(int,int)) 18 { 19 po = print; 20 po(i,j); 21 } 22 23 int (*call(int i))(int *, int*) 24 { 25 cout << "in call " << i << endl; 26 point pc = 0; 27 return pc; 28 } 29 30 31 int sum(int *i, int *j) 32 { 33 int result = *i - *j; 34 return result; 35 } 36 37 int main() 38 { 39 pc pc1 = print; 40 pc pc2 = &print; 41 pc1(1,2); 42 pc2(3,4); 43 callPrint(5,6,print); 44 45 point pointer_to_call = call(100); 46 pointer_to_call = sum; 47 int i = 100; 48 int j = 20; 49 int result = pointer_to_call(&i,&j); 50 cout << result << endl; 51 return 0; 52 }
首先,在typdef 处定义了两个函数指针,一个是返回空值,形参是两个整数类型的函数。另外一个是返回Int类型,形参是两个指向整数类型的指针变量的函数。
看print函数和callPrint函数,print函数只是简单将参数的和打印出来。callPrint 函数接收了一个函数指针作为参数,并且调用了这个函数指针。
再看call 函数和sum函数,call 函数的完整含义是:接收一个整数类型作为形参,返回一个函数指针,这个函数指针指向一个返回int 类型,接收两个指向整形的指针作为参数。
具体使用见main方法。