首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++】函数指针 ④ ( 函数指针函数参数 | 使用函数指针间接调用函数 | 函数指针做参数 | 函数指针类型的本质 | 函数指针做参数意义 )

一、函数指针函数参数 1、使用函数指针间接调用函数 在上一篇博客 【C++】函数指针 ③ ( 函数指针语法 | 函数名直接调用函数 | 定义函数指针变量 | 使用 typedef 定义函数类型 | 使用...动态传入 ; 函数指针类型 的该用法 是框架的基础 , 将 函数执行逻辑 与 软件框架 进行解耦 ; 也就是 将 任务调用者 与 任务实现者 进行了隔离 , 解耦合 ; 下面的示例中 , 可以将 函数指针类型变量...约定了 函数的 参与者 ; 函数返回值类型 约定了 函数执行结果 ; 只要 将 子任务 按照 上述 " 函数指针类型 " 的约定 , 开发出 符合要求 的 函数 , 就可以将其作为一个 子任务 传递到...其它函数执行 ; 4、函数指针做参数意义 函数指针做参数意义 : 提高程序灵活性 : 通过使用函数指针函数参数 , 这样可以 在 程序 运行时 动态地 设置 要调用的函数 , 提高了程序的灵活性..., 11, 12); // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; } 执行结果 : x + y = 15 x + y = 19 使用 fun

30150

【C++】函数指针 ③ ( 函数指针语法 | 函数名直接调用函数 | 定义函数指针变量 | 使用 typedef 定义函数类型 | 使用 typedef 定义函数指针类型 )

直接调用 // 直接调用 add 函数 , 运行该函数 // 函数名 add 就是函数地址 add(1, 2); 2、定义函数指针变量 如果不使用 add 函数名 调用函数 , 使用 函数类型的指针...func_add // 使用时需要使用该类型的指针调用函数 typedef int fun_add(int, int); 使用定义的 函数类型 调用函数 : 定义函数类型 的 指针类型 func_add...; 定义函数类型示例 : 将指向 int add(int x, int y) 函数函数指针类型 int (*)(int, int) , 定义为 pFun_add名称 , 使用时需要使用该类型变量调用函数...pFun_add)(int, int); 使用定义的 函数指针类型 调用函数 : 定义函数指针类型 pFun_add 的 变量 , 然后 将 add 函数地址 赋值给 该变量 , 然后 通过 函数指针变量...fun_add* fun = add; fun(5, 6); // 定义函数指针类型变量 pFun_add pFun = add; fun(7, 8); // 控制台暂停 , 按任意键继续向后执行

38060
您找到你想要的搜索结果了吗?
是的
没有找到

指针函数函数指针区别

函数指针 1.1 定义 函数指针是指向函数指针。它存储了函数的地址,允许在运行时动态地选择要调用的函数函数指针允许在代码中间接地调用不同的函数。它是一个指针,可以指向函数,并用于调用该函数。...int (*add)(int, int); // 定义一个指向参数为两个整数、返回类型为整数的函数指针 void (*func)(void); // 定义一个指向无参数、无返回值的函数指针...而不是add=addNumbers(int a, int b) ; int result = add(3, 4);//等价于int result = (* add)(3, 4); // 使用函数指针调用函数...指针函数 2.1 定义 指针函数指的是一个函数,其返回类型是一个指针。这种函数返回一个指针值,而不是基本类型的值。指针函数本身是函数,其返回值是一个指针。...两者区别 函数指针是指向函数指针,允许在运行时选择调用的函数指针函数是一个函数,其返回类型是一个指针,它返回指针值而不是基本类型的值。

10910

C语言(函数指针指针函数

函数指针指针函数 ③ 数组指针指针数组 还有个找抽的:⑤ 函数指针数组 经翻阅小学五年级语文课本得知,一个短语中的最后部分,是这个短语的中语,其余部分是定语(修饰语)。...也就是说,以上短语相当于: ① 指向函数指针 ② 返回指针函数 ③ 指向数组的指针 ④ 放了很多指针的数组 ⑤ 放了很多指向函数指针的数组 ? 语文课上完了,然鹅,没用!...初学者们的福音到了,以上那些渣渣是这样的: ① 函数指针 p int func(char , double); // 一个普通函数 int (*p)(char, double); // 一个指向以上函数指针...p = &func // 让 p 指向函数 func ② 指针函数 func char * func(int, float); // 一个返回指针函数 ③ 数组指针 q int num[10]; /...char* 指针的数组 ⑤ 函数指针数组 fs void func(double, int); // 一个普通函数 void (*fs[3])(double, int); // 一个存放了 3 个指向以上函数指针的数组

1.7K20

指针函数函数指针「建议收藏」

不过在使用指针函数时,需要注意一点,相信细心地读者已经发现了,对比func_sum和func_sum2函数,除了返回值不一样之外,还有一个不同的地方在于,在func_sum中,变量sum使用的是静态局部变量..."); scanf("%d", &num); int *p = func_sum(num); printf("sum:%d\n", *p); return 0; } 执行以上程序...因此,在使用指针函数的时候,一定要避免出现返回局部变量指针的情况。 那么为什么用了static就可以避免这个问题呢? 原因是一旦使用了static去修饰变量,那么该变量就变成了静态变量。...然后对函数指针进行初始化,前面已经提到过了,直接将函数名赋值给函数指针变量名即可。 上述代码运行的结果如下: 调用的时候,既可以直接使用函数指针调用,也可以通过函数指针所指向的值去调用。...,就可以使用指针函数来实现,我们只需要修改函数指针初始化的地方,而不需要去修改每个调用的地方(特别是当调用特别频繁的时候)。

48320

C++函数指针指针函数、返回值为函数指针函数浅谈

C++函数指针指针函数、返回值为函数指针函数浅谈 引言 函数指针指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。...而返回值为函数指针指针函数就更难理解了,放在文章的最后来介绍。 函数指针 函数指针是一种特殊的 指针,它指向函数的入口。...//int (*add)(int, int) = &addfunc; int result = (*add)(1, 2); //两种方法都可以,建议使用第一种...0; } 返回值为函数指针函数 其实在搞懂了函数指针指针函数后,这个概念并不难懂,其实这就是一个复杂一点的指针函数,因为他的返回值为函数指针。...这是一个指针函数,返回值为函数指针(返回值为void,无参数列表的一个函数),它有一个参数,参数为一个函数指针 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152178

1.5K10

CC++函数指针指针函数

其通用表达式为:类型说明符 (*函数名) (参数) int (*fun)(int x) //函数指针的定义 int (*fun)(int x,int y) //函数指针的定义 函数指针在PC软件开发中使用较少...,在嵌入式行业使用较多,但是无论是PC软件还是嵌入式软件,理解函数指针的定义和使用,对于理解程序设计都是很有好处的。...函数指针的赋值 函数指针和其他指针一样定义之后使用之前也是需要初始化。...函数指针的用法 我们使用指针的时候,需要通过钥匙 * 来取其指向的内存里面的值,函数指针使用也如此。通过用(*pf)取出存在这个地址上的函数,然后调用它。...感兴趣的同学可以看看下面这个用法,并尝试理解该表达式是如何使用函数指针

90910

CC++函数指针指针函数

其通用表达式为:类型说明符 (*函数名) (参数) int (*fun)(int x) //函数指针的定义 int (*fun)(int x,int y) //函数指针的定义 函数指针在PC软件开发中使用较少...,在嵌入式行业使用较多,但是无论是PC软件还是嵌入式软件,理解函数指针的定义和使用,对于理解程序设计都是很有好处的。...函数指针的赋值 函数指针和其他指针一样定义之后使用之前也是需要初始化。...函数指针的用法 我们使用指针的时候,需要通过钥匙 * 来取其指向的内存里面的值,函数指针使用也如此。通过用(*pf)取出存在这个地址上的函数,然后调用它。...感兴趣的同学可以看看下面这个用法,并尝试理解该表达式是如何使用函数指针

2K00

【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )

的 返回值 不是 " 函数重载 " 的 判断标准 ; 二义性 : 如果 函数重载 与 默认参数 结合使用 , 出现了二义性 , 编译直接失败 ; 函数指针赋值重载函数 : 根据 函数指针 类型中的 参数列表类型..., 自动匹配 重载函数 ; 一、函数指针定义方法 先定义一个函数 , 在本章节中使用不同的方法 , 定义该函数 对应 的 函数指针 ; // 定义一个函数 int add(int a, int b)...: 函数指针 指向函数 的 参数列表 ; 直接使用 函数指针 定义语法 , 定义 函数指针 ; // 直接定义 函数指针 int (*func3)(int a, int b) = add; 2、通过...); 然后 , 通过 func_ptr 函数指针类型 , 定义 函数指针 , 直接使用 变量类型 变量名称 的方式定义 函数指针 ; // 根据 函数指针类型 定义 函数指针 func_ptr func2...system("pause"); return 0; } 执行结果 : 三种方式定义的函数指针都成功 func1(1, 2) = 3 , func2(1, 2) = 3 , func3(1,

16730

函数指针

前言: 先看两个基础,函数指针和extern关键字,然后由一个具体的例子,具体使用函数指针。 一、基础 函数指针:即指向函数指针,本质还是一个指针。...函数指针的声明:返回值类型 ( * 指针变量名) ([形参列表]); 注意这里是声明不是定义,声明之后它就是一个类型了(与int,char,int *等级别等同,这点有点像结构体),然后就可以定义、使用了...第二,当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用...二、举例 这里说一下背景,假如我这里做一个平台,我一套代码要交付到多个产品,然后结合产品代码进行使用,那么我做平台肯定不能为每个产品做一套代码,但是有时候同样一个功能,各个产品之间会出现差异,这个时候指针函数就派上用场了...,我给各个产品提供一个指针函数定义的变量,然后各个产品将自己的实现函数挂接在上面,这样就屏蔽了各个产品的差异,甚至有些产品可以不挂接,那么我就判断一下,如果没挂接,我就给一个默认的实现就ok了(这部分在下面代码中没体现

1K60

C语言 函数指针指针函数及Main()函数

指针函数 定义 指针函数,简单的来说,就是一个返回指针函数,其本质是一个函数,而该函数的返回值是一个指针。...调用函数指针的方式也有两种: x = (*fun)(); x = fun(); 两种方式均可,其中第二种看上去和普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数...(5,3) << fun(5,3); return a.exec(); } 输出如下: (*fun)(1,2) = 3 (*fun)(5,2) = 2 2 上面说到的几种赋值和调用方式我都分别使用了...其中第一个表示参数的个数;第二个参数中argv[0]为自身运行目录路径和程序名,argv[1]指向第一个参数、argv[2]指向第二个参数…… 完整程序如下 2、如何执行 由于main...当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传 送到main的形参中去,具体操作如下: 首先在C++中完成编译之后,然后在dos命令窗口下切换到.exe执行文件所在的文件夹

71030

【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )

的 返回值 不是 " 函数重载 " 的 判断标准 ; 二义性 : 如果 函数重载 与 默认参数 结合使用 , 出现了二义性 , 编译直接失败 ; 函数指针赋值重载函数 : 根据 函数指针 类型中的 参数列表类型..., 自动匹配 重载函数 ; 一、函数指针定义方法 先定义一个函数 , 在本章节中使用不同的方法 , 定义该函数 对应 的 函数指针 ; // 定义一个函数 int add(int a, int b)...: 函数指针 指向函数 的 参数列表 ; 直接使用 函数指针 定义语法 , 定义 函数指针 ; // 直接定义 函数指针 int (*func3)(int a, int b) = add; 2、通过...); 然后 , 通过 func_ptr 函数指针类型 , 定义 函数指针 , 直接使用 变量类型 变量名称 的方式定义 函数指针 ; // 根据 函数指针类型 定义 函数指针 func_ptr func2...system("pause"); return 0; } 执行结果 : 三种方式定义的函数指针都成功 func1(1, 2) = 3 , func2(1, 2) = 3 , func3(1,

12930

函数指针的定义方式,和指针函数的区别,函数指针数组

printf("%d+%d", a, b); } void test() { //函数指针定义的三种方式 //1.先定义出函数类型,再通过函数类型定义指针变量 typedef void(FUNC_TYPE...//2.先定义出函数指针类型,再通过类型定义函数指针变量 typedef void(*FUNC_TYPE)(int, int); FUNC_TYPE func = fun1; func...//3.直接定义函数指针变量 void(*func)(int, int) = fun1; func(30,40); } int main() { test(); return 0; } ?...以上三种方式:第三种的使用率最高 函数指针指针函数的区别 函数指针:指向函数指针—void(*p)(int,int)=fun1; 指针函数函数返回值是指针—int * fun1(int *a){return...a;} 函数指针数组-----》指针数组,数组里面每个元素类型都是函数指针 #define _CRT_SECURE_NO_WARNINGS #include void fun1()

1.3K10

函数指针指针函数,返回值为指针函数「建议收藏」

函数指针就是一个指向函数指针,本质上是一个指针,只是这个指针指向的对象是函数,而不是一般意义上的存储对象。 正文: 指针函数 指针函数就是返回指针值的函数,本质是一个函数。...在将指针函数函数指针区分时,也可以通过“指针标志*能否和函数名分离”来判断这个一个指针函数,还是一个函数指针。 返回值问题 指针函数使用和一般函数使用相同,但需注意返回值问题。...定义 函数指针的定义格式如下:函数类型 (*指针变量) ([参数列表]) 在形式上,函数指针的特征是使用一个括号包裹指针标志和指针变量,将括号移除,函数指针就变成指针函数。...赋值 函数指针的赋值操作: 使用函数名给指向函数指针变量赋值。其赋值的一般格式如下:函数指针 = [ &] 函数名; 其中,函数名后不能带括号和参数,函数名前的&是可选,建议不要使用。...这是因为编译器知道它是一个指向函数指针,并且它还知道在该环境下所能做的惟一的一件事就是调用函数,因此这里没有任何模糊不清的表达。 使用场景 函数指针的常见用途就是把函数指针作为参数传递给函数

1.6K10
领券