博客总结 :
先定义一个函数 , 在本章节中使用不同的方法 , 定义该函数 对应 的 函数指针 ;
// 定义一个函数
int add(int a, int b) {
return a + b;
}
按照下面的 函数指针 语法 , 定义函数指针 ;
" 函数指针 " 定义语法 :
return_type (*func_ptr)(parameter_list);
直接使用 函数指针 定义语法 , 定义 函数指针 ;
// 直接定义 函数指针
int (*func3)(int a, int b) = add;
首先 , 使用 typedef 关键字 , 定义 函数类型 , 下面的代码 定义了 函数类型 func , 函数的 参数列表是 2 个 int 参数 , 返回值是 int ;
// 定义函数类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (func)(int a, int b);
然后 , 通过定义的 func 函数类型 , 定义函数指针 , 直接根据指针的定义语法 指针类型* 指针名称 定义函数指针 , 同时将 add 函数 的 地址 赋值给 函数指针 ;
// 根据 函数类型 定义 函数指针
func* func1 = add;
首先 , 通过 typedef 关键字, 定义 函数指针 类型 , 类型名称为 func_ptr , 对应的函数的 参数列表是 2 个 int 参数 , 返回值是 int ;
// 定义函数指针类型 func_ptr , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (*func_ptr)(int a, int b);
然后 , 通过 func_ptr 函数指针类型 , 定义 函数指针 , 直接使用 变量类型 变量名称 的方式定义 函数指针 ;
// 根据 函数指针类型 定义 函数指针
func_ptr func2 = add;
在下面的代码中 , 分别使用上述章节中讲解的三种方式 , 定义了函数指针 ;
代码示例 :
// 包含 C++ 头文件
#include "iostream"
// 使用 std 标准命名空间
// 该命名空间中 , 定义了很多标准定义
using namespace std;
// 定义函数类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (func)(int a, int b);
// 定义函数指针类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (*func_ptr)(int a, int b);
// 定义一个函数
int add(int a, int b) {
return a + b;
}
int main()
{
// 根据 函数类型 定义 函数指针
func* func1 = add;
// 根据 函数指针类型 定义 函数指针
func_ptr func2 = add;
// 直接定义 函数指针
int (*func3)(int a, int b) = add;
// 打印 调用结果
cout << "func1(1, 2) = " << func1(1, 2)
<< " , func2(1, 2) = " << func2(1, 2)
<< " , func3(1, 2) = " << func3(1, 2) << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 : 三种方式定义的函数指针都成功
func1(1, 2) = 3 , func2(1, 2) = 3 , func3(1, 2) = 3
Press any key to continue . . .
