函数指针

关于函数指针,三个方面来说明,一是函数指针的调用,二是将函数指针作为参数传入,三是返回函数指针。

 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方法。

 

posted on 2017-03-05 13:39  ^~~^  阅读(183)  评论(0编辑  收藏  举报

导航