函数类型和函数指针

函数类型的语法基础:

函数指针用于指向一个函数, 函数名是函数体的入口地址
1)可通过函数类型定义函数指针: FuncType* a;
2)也可以直接定义:type (*a)(parameter list);
a为函数指针变量名
type为指向函数的返回值类型 parameter list为指向函数的参数类型列表

#include<iostream>
using namespace std;
typedef void(func)(int);//定义一个函数类型
void test(int  a)	//定义一个函数	   
{
	cout <<" A= "<< a*a << endl;
}
void test1(int b)//定义一个函数	   
{
	cout << " B= " <<b*b<< endl;
}
void main()
{
	func* F = NULL;//定义一个指向函数的类型FUNC的空指针F	
	F = test;//指向test函数
	F(10);//通过函数指针F,间接调用test	  	   
	void(*F1)(int) = &test1;	//直接定义一个函数指针F1指向test1
	F1(5);//通过函数指针间接调⽤用	
}

在这里插入图片描述

函数指针做函数参数:

当函数指针 做为函数的参数,传递给一个被调用函数,被调用函数就可以通过这个指针调用外部的函数,这就形成了回调。

#include<iostream>
using namespace std;
int test(int a, int b)
{
	cout << " a * b= " << a*b << endl;
	return 0;
}
int test2(int(*P)(int a, int b))
{
	int a, b;
	a = 5;
	b = 5;
	test(1, 2);//调用了test函数
	cout << P(a, b) << endl;//通过函数指针做函数参数,间接调用add函数
	return 0;
}
void main()
{
	int(*P1)(int a, int b);//定义一个函数指针P1指向int()(int, int)函数类型 
	P1 = test;
	test2(P1);
}

在这里插入图片描述
优点:1、函数的调用和函数的实现有效的分离
2、类似C++的多态,可扩展

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值