栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

01 函数指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

01 函数指针

函数指针
1)概念 函数指针是指向函数的指针变量。因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数。 2)函数指针和指针函数的区别
名称函数指针指针函数
本质指针函数
区别指向函数的指针变量返回值为指针的一个函数
用法返回值 (*p)(参数列表),p就是函数指针返回值* Function(参数列表),Fuction就是指针函数
3)普通函数的函数指针使用
#include 
int (*p)(int);   // 方法1         要和函数的返回值,参数列表一致才能使用
typedef int (*MyFunction)(int);       //方法2 (用typedef给函数指针重新命名)
int Print(int n)
{
	printf("Function Pointerrn");
	return 0;
}
int main()
{
//方法1的实现
	p = &Print;    //p指向了Print(int)
	p(5);             //调用Print(int)
//方法2的实现
MyFunction q = &Print;       //将函数指针命名为q
	q(4);            

	return 0;
}
4) 成员函数的函数指针使用
#include 
class Object
{
public:
	int Print(int n)
	{
		printf("Function Pointerrn");
		return 0;
	}
};
int (Object::* p)(int);               //方法1
typedef int (Object::*MyFunction)(int);   //方法2(用typedef给函数指针重新命名)
int main()
{
	p = &Object::Print;
	Object obj;
	(obj.*p)(5);             //方法1的实现     p表示函数地址,*p表示函数

	MyFunction q = &Object::Print;      //将函数指针命名为q
	(obj.*q)(4);           //方法2的实现

	return 0;
}
5)C++11以后可以using代替,更加简便:using 新名称=返回类型(*)(参数类型);
#include 
int Product(int a,int b)
{
	return a * b;
}
void Print()
{
	std::cout << "Print" << std::endl;
}
using FuctionProduct =int(*)(int, int);     //比typedef可读性更高
using FuctionPrint = void(*)(void);         //using  新名称=返回类型(*)(参数类型);
int main()
{
	FuctionProduct fuc1 = Product;    
	FuctionPrint fuc2 = Print;
	int n=fuc1(2, 3);
	fuc2();
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/714577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号