网站内容建设和管理,什么网站做装修的,做信息类网站怎么赚钱,企业网站优化策略文章目录 一、函数指针定义方法1、直接定义函数指针2、通过 函数类型 定义 函数指针3、通过 函数指针类型 定义 函数指针4、代码示例 - 不同方式定义函数指针 博客总结 :
重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类… 文章目录 一、函数指针定义方法1、直接定义函数指针2、通过 函数类型 定义 函数指针3、通过 函数指针类型 定义 函数指针4、代码示例 - 不同方式定义函数指针 博客总结 :
重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类型 / 顺序 的不同 是 函数重载 的判断标准 , 函数 的 返回值 不是 函数重载 的 判断标准 ;二义性 : 如果 函数重载 与 默认参数 结合使用 , 出现了二义性 , 编译直接失败 ;函数指针赋值重载函数 : 根据 函数指针 类型中的 参数列表类型 , 自动匹配 重载函数 ; 一、函数指针定义方法 先定义一个函数 , 在本章节中使用不同的方法 , 定义该函数 对应 的 函数指针 ;
// 定义一个函数
int add(int a, int b) {return a b;
}1、直接定义函数指针 按照下面的 函数指针 语法 , 定义函数指针 ; 函数指针 定义语法 :
return_type (*func_ptr)(parameter_list);return_type : 函数指针 指向的函数 的 返回值类型 ;func_ptr : 函数指针 名称 , 使用该 名称 也可以调用函数 , 用法与函数名相同 ;parameter_list : 函数指针 指向函数 的 参数列表 ; 直接使用 函数指针 定义语法 , 定义 函数指针 ; // 直接定义 函数指针int (*func3)(int a, int b) add;2、通过 函数类型 定义 函数指针 首先 , 使用 typedef 关键字 , 定义 函数类型 , 下面的代码 定义了 函数类型 func , 函数的 参数列表是 2 个 int 参数 , 返回值是 int ;
// 定义函数类型 func , 参数列表是 2 个 int 参数 , 返回值是 int
typedef int (func)(int a, int b);然后 , 通过定义的 func 函数类型 , 定义函数指针 , 直接根据指针的定义语法 指针类型* 指针名称 定义函数指针 , 同时将 add 函数 的 地址 赋值给 函数指针 ; // 根据 函数类型 定义 函数指针func* func1 add;3、通过 函数指针类型 定义 函数指针 首先 , 通过 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;4、代码示例 - 不同方式定义函数指针 在下面的代码中 , 分别使用上述章节中讲解的三种方式 , 定义了函数指针 ; 代码示例 :
// 包含 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 . . .