c / c++中的函数指针

weblog 2389 0 0

一个案例说明

#include <iostream>
using namespace std;
/**定义函数指针*/
//typedef 声明为一个指针函数类型 MethodPointer
//int为指针指向函数的返回值类型
//(*MethodPointer) 声明一个函数指针
//(int a, int b)只能指向有两个int类型的函数
typedef int (*MethodPointer)(int a, int b);

int add(int a, int b) {
	return a + b;
}

int del(int a, int b) {
	return a - b;
}

void main() {
	int a = 2, b = 3;
	/**普通调用**/
	int c = add(a, b);
	cout << c << endl;

	c = del(a, b);
	cout << c << endl;

	/*函数指针调用**/
	//m指向 add 函数的地址
	MethodPointer m = &add;
	//m2指向del函数的地址
	MethodPointer m2 = &del;

	//通过函数指针调用目标方法
	c=m(a,b);
	cout << c << endl;
	c = m2(a, b);
	cout << c << endl;
	system("pause");
}

 


猜你喜欢
weblog 3155 c#据类型 c#据类型分为值类型和引用类型 值类型有包括(结构体类型,枚举类型) 引用类型又包括(类类型,组类型,接口类型,委托类型) c#据类型派生谱系 值类型
五子棋 游戏 算法 数据结构 c 1089 下篇分享c#源码~
linux系统 3762 ctrl+c和ctrl+z都是断命令,但是他们作用却不一样.ctrl+c强制断程序ctrl+z是将任务断,挂起状态,ctrl+c是强制断程序执行。ctrl+z是将任务断.但是此任
java基础 2146 java调用c/c++类库(JNI技术)1.在java项目下创建native方法packagejni;/***@authorjiajia*/publicclassJniTest
其他 2388 事件声明和例子usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text
weblog 1956 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication3{classProgram{staticvoidMain(string[]args){//Action委托Actiona=newAc
数据结构与算法 2489 链式队列基本操作c++classnode{public:intdata;node*next;node*prev;};#include"node.h"classqueue{private:node
weblog 3922 值类型传值参方法执行时会为实参创建一个副本,方法内改变形参值时不会改变实参值。引用类型传值参方法会为实参创建一个副本引用,形参和实参是同一个对象内存地址,当形参引用内存地址改变
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。