45. c++函数指针

在‘12 指针’中描述了指针的本质,就是一个内存地址(一串数字)。函数在编译时会被编译为cpu指令,然后存储在可执行文件exe中。而函数指针就是这些指令的地址,可以将一个函数赋值给一个变量或将函数作为形参使用。

45.1 函数指针的使用

以下代码描述如何使用函数指针:

#include 
#include 
#include 
void print(int a )
{
	std::cout << "hello value:"<

鼠标悬停在function上,显示auto function的本质就是void(*function)(int a),这是c语言中的原始函数指针

45. c++函数指针_第1张图片

函数指针通常作为形参传入,然后在该函数中执行相应的函数任务,下面是一个较为实际的使用案例

#include 
#include 
#include 
void print(int a )
{
	std::cout << "value:"< &v, void(*fun)(int))
{
	for (int value:v)
	{
		fun(value);
	}
}
int main()
{
	std::vector v;
	v.reserve(3);
	v.emplace_back(1);
	v.emplace_back(2);
	v.emplace_back(3);
	//将函数作为参数传入
	forEach(v, print);

	std::cin.get();
}

45.2 使用lambda表达式 

在 调用forEach函数时,函数指针的部分可以直接用lambda表达式代替,如下:

	
void forEach(const std::vector &v, void(*fun)(int))
{
	for (int value:v)
	{
		fun(value);
	}
}

forEach(v, [](int value)
	{
		std::cout << "value:" << value << std::endl;
	});

具体关于lambda的内容会在下一节中详述。 

你可能感兴趣的:(c++,开发语言)