函数指针(function pointer)

函数指针大家了解一下就行了,用得不多,但一定要认识它。

什么是函数指针

如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。

 

#include <iostream>

using namespace std;

int fun(int a,int b){
	cout << a << b << endl;
	return 0;
}
//1.定义一种函数类型
//返回值int (函数名) 参数列表(int,int)
typedef int(MY_FUN)(int,int); //MY_FUN 就是重新定义的函数类型

//2.定义一个指向这种函数类型的指针类型
typedef int(*MY_FUN_P)(int,int);  //MY_FUN_P 就是指向返回值int 参数(int,int)这种函数的函数指针类型
void main() {
	MY_FUN *p = NULL; 
	p = fun; //指向fun函数首地址
	p(10,20);

	MY_FUN_P fp = NULL;
	fp = fun;
	fp(18,22);
	
	//第三种形式
	int(*fun_pointer)(int, int);
	fun_pointer = fun;
	fun_pointer(38,17);
	system("pause");
}

假设有个函数 fun 我们定义一个指针能够指向这种函数

1.定义一种函数类型

2.定义一个指向这种函数类型的指针类型

3.直接定义

函数指针在使用的时候和普通指针原理有点不一样 他在调用的时候不需要加* 操作改变地址 偏移量++ 加不了 他是个特殊指针

本博客所有文章如无特别注明均为原创。作者:odaycaogen复制或转载请以超链接形式注明转自 123``blog
原文地址《函数指针(function pointer)

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)