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

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

一、函数指针函数参数 1、使用函数指针间接调用函数 在上一篇博客 【C++】函数指针 ③ ( 函数指针语法 | 函数名直接调用函数 | 定义函数指针变量 | 使用 typedef 定义函数类型 | 使用..., int); 定义函数 接收 pFun_add 类型形参作为参数 , 该类型是 函数指针类型 , 也就是 函数接收一个 函数指针类型参数 , 在该函数调用 函数指针 指向 函数 ; // 传入函数指针...其它函数执行 ; 4、函数指针做参数意义 函数指针做参数意义 : 提高程序灵活性 : 通过使用函数指针函数参数 , 这样可以 在 程序 运行时 动态地 设置 要调用函数 , 提高了程序灵活性...C 语言 模拟面向对象用法 ; 可以将特定 函数指针类型 定义为 结构一部分 , 并使用结构体 来传递具有特定行为对象地址 ; 该操作有助于更好地组织代码 , 使代码更易于理解和维护...; 错误处理 : 使用函数指针 , 将错误处理函数作为参数传递给其他函数 , 在发生错误时立即调用适当错误处理函数 , 无需返回到调用堆栈较高层次 ; 二、代码示例 - 函数指针函数参数 代码示例

23350

C语言结构指针_C语言函数返回结构指针

文章目录 结构体概述 结构指针 动态存储分配 .malloc函数 .calloc函数 .free函数 结构体概述 问题定义:有时需要将不同类型数据组合成一个有机整体,以便于使用,...可以设一个指针变量,用来指向一个结构体变量,此时该指针变量值是结构体变量起始地址。 同时指针变量也可以用来指向结构体数组元素。...与前面讨论各类指针变量相同,结构指针变量也必须要先赋值才能使用 赋值就是把结构变量首地址赋予该指针变量,不能把结构名赋予该指针变量。...在C语言中不允许动态数组类型。例如:a[n]就是错误,必须要用一个实际数字表示数组长度,但是在实际开发,往往会发生这种情况,即所需要内存空间取决于实际输入数据,而无法预先确定。...对于以上问题,使用数组办法很难解决,只能通过内存管理函数,动态分配内存空间。

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

c++指针函数使用——回调函数

1 /* 2 3 函数指针 4 5 函数也是有地址 6 7 所谓函数指针,就是指向函数指针函数指针也是一个变量,可以指向不同函数。...x = pf(3, 4);//通过函数指针pf调用函数add (使用函数指针不必像使用一般指针那样解引用) 35 int x = (*pf)(3, 4);//函数指针解引用 这样做好处可以明确指明...同普通指针一样,如果 44 //没有明确初始化,则函数指针值将是一个随机数,使用这样指针非常危险。...因此在使用函数指针之前对其进行初始化或着赋一个初值,即将一个函数名赋给 45 //该函数指针变量 46 cout << fun_ptr(7, 8)<<endl; 47 48 49...system("pause"); 50 return 0; 51 } 1 /* 2 3 指针函数使用——回调函数 4 5 6 */ 7 #include<cstdlib

1.8K60

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

", x + y); return x + y; } 直接调用函数 : 该函数 函数名 add 就是 函数地址 , 直接调用 add 函数 , 运行函数 ; // 1....直接调用 // 直接调用 add 函数 , 运行函数 // 函数名 add 就是函数地址 add(1, 2); 2、定义函数指针变量 如果不使用 add 函数名 调用函数 , 使用 函数类型指针..., int) 函数类型 指针 , 将 add 函数名 ( 函数地址 ) 直接 赋值给 函数指针 , 可以直接通过函数指针调用函数 ; 下面的代码 , 定义了函数指针 p , 指向 int(int,...func_add // 使用时需要使用该类型指针调用函数 typedef int fun_add(int, int); 使用定义 函数类型 调用函数 : 定义函数类型 指针类型 func_add...直接调用 // 直接调用 add 函数 , 运行函数 // 函数名 add 就是函数地址 add(1, 2); // 声明一个 int(int, int) 类型指针变量 // int(int

35960

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

C++函数指针指针函数、返回值为函数指针函数浅谈 引言 函数指针指针函数C重要而容易混淆概念,博主将通过两个实例来说明这两个截然不同概念。...而返回值为函数指针指针函数就更难理解了,放在文章最后来介绍。 函数指针 函数指针是一种特殊 指针,它指向函数入口。...//int (*add)(int, int) = &addfunc; int result = (*add)(1, 2); //两种方法都可以,建议使用第一种...0; } 返回值为函数指针函数 其实在搞懂了函数指针指针函数后,这个概念并不难懂,其实这就是一个复杂一点指针函数,因为他返回值为函数指针。...先给一个例子: /* *本例是SGISTL源码一个函数,比普通返回值为函数指针函数要更复杂一点 *因为本例函数参数也是一个函数指针 */ void (* set_malloc_handler

1.5K10

C 语言】结构体相关 函数 指针 数组

结构体概述 : 结构体是 多个 变量集合, 变量类型可以不同; -- 可进行操作 : 结构体可以进行 拷贝 赋值操作, 可以作为 函数参数 和 函数返回值; 1....int age; } s1, s2, s3; -- 使用结构标记声明 : 结构标记 student 代表了花括号声明, 是 结构简写, 可以使用结构标记代替花括号内容; struct....name = "KW"; c1.s2.age = 22; /*访问结构变量, 使用 ....结构体与函数 结构合法操作 :  -- 整体复制 : 结构体可以复制; -- 整体赋值 : 声明结构时候可以整体赋值, 在其它情况下不可以; -- & 取地址 : 使用 & 运算符获取 结构体地址...->name 分析 : 获取 结构 name 字符串值(注意不是指针|地址); -- *p++->name 分析 : 先获取 name 字符串值, 再将p自增; 结构函数示例 : /****

2.9K20

C 语言】结构体 ( 结构体作为函数参数 | 结构指针作为函数参数 )

文章目录 一、结构体作为函数参数 二、结构指针作为函数参数 三、完整代码示例 一、结构体作为函数参数 ---- 结构体变量 作为函数形参 , 在函数 , 只能访问 该函数形参 , 无法修改 结构体内存...值 ; 结构体变量 通过 形参形式传入 , 会在该 printf_student 方法栈内存 , 重新为该 结构体变量 分配内存 , 函数执行结束 , 这块内存就自动收回了 ; 因此在该函数...---- 结构指针变量作为参数 , 可以 通过 指针 间接赋值 , 在该函数 , 将 from 结构指针指向变量 拷贝到 to 结构指针指向变量 ; 注意 : 函数传入是 指向 结构体变量指针...* 将 from 结构体变量拷贝到 to 结构体变量 * 注意 : 函数传入是 指向 结构体变量指针 , 不能直接传入结构体变量 * 如果直接传入结构体变量 , 该结构体变量直接在本函数栈内存起作用...* 将 from 结构体变量拷贝到 to 结构体变量 * 注意 : 函数传入是 指向 结构体变量指针 , 不能直接传入结构体变量 * 如果直接传入结构体变量 , 该结构体变量直接在本函数栈内存起作用

2.5K20

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

返回值 不是 " 函数重载 " 判断标准 ; 二义性 : 如果 函数重载 与 默认参数 结合使用 , 出现了二义性 , 编译直接失败 ; 函数指针赋值重载函数 : 根据 函数指针 类型 参数列表类型..., 自动匹配 重载函数 ; 一、函数指针定义方法 先定义一个函数 , 在本章节中使用不同方法 , 定义该函数 对应 函数指针 ; // 定义一个函数 int add(int a, int b)...); return_type : 函数指针 指向函数 返回值类型 ; func_ptr : 函数指针 名称 , 使用该 名称 也可以调用函数 , 用法与函数名相同 ; parameter_list...: 函数指针 指向函数 参数列表 ; 直接使用 函数指针 定义语法 , 定义 函数指针 ; // 直接定义 函数指针 int (*func3)(int a, int b) = add; 2、通过...= add; 4、代码示例 - 不同方式定义函数指针 在下面的代码 , 分别使用上述章节中讲解三种方式 , 定义了函数指针 ; 代码示例 : // 包含 C++ 头文件 #include "iostream

16230

c语言函数指针理解与使用

2.函数指针使用例子   上面我们定义了一个函数指针,但如何使用它呢?...,需要通过钥匙(“*”)来取其指向内存里面的值,函数指针使用也如此。...使用函数指针好处在于,可以将实现同一功能多个模块统一起来标识,这样一来更容易后期维护,系统结构更加清晰。或者归纳为:便于分层设计、利于系统抽象、降低耦合度以及使接口与实现分开。 4....不过不要紧,关键是你明白这是一个指针数组,是数组。函数指针数组怎么使用呢?这里也给出一个非常简单例子,只要真正掌握了使用方法,再复杂问题都可以应对。...指针专题一 C语言 指针专题二 C语言 函数1 C语言 函数2 C语言指针核心16讲 指针专题一 C语言指针核心16讲 指针专题二

98030

c语言函数指针理解与使用

2.函数指针使用例子   上面我们定义了一个函数指针,但如何使用它呢?...,需要通过钥匙(“*”)来取其指向内存里面的值,函数指针使用也如此。...使用函数指针好处在于,可以将实现同一功能多个模块统一起来标识,这样一来更容易后期维护,系统结构更加清晰。或者归纳为:便于分层设计、利于系统抽象、降低耦合度以及使接口与实现分开。 4....不过不要紧,关键是你明白这是一个指针数组,是数组。函数指针数组怎么使用呢?这里也给出一个非常简单例子,只要真正掌握了使用方法,再复杂问题都可以应对。...指针专题一 C语言 指针专题二 C语言 函数1 C语言 函数2 C语言指针核心16讲 指针专题一 C语言指针核心16讲 指针专题二

62910

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

返回值 不是 " 函数重载 " 判断标准 ; 二义性 : 如果 函数重载 与 默认参数 结合使用 , 出现了二义性 , 编译直接失败 ; 函数指针赋值重载函数 : 根据 函数指针 类型 参数列表类型..., 自动匹配 重载函数 ; 一、函数指针定义方法 先定义一个函数 , 在本章节中使用不同方法 , 定义该函数 对应 函数指针 ; // 定义一个函数 int add(int a, int b)...); return_type : 函数指针 指向函数 返回值类型 ; func_ptr : 函数指针 名称 , 使用该 名称 也可以调用函数 , 用法与函数名相同 ; parameter_list...: 函数指针 指向函数 参数列表 ; 直接使用 函数指针 定义语法 , 定义 函数指针 ; // 直接定义 函数指针 int (*func3)(int a, int b) = add; 2、通过...= add; 4、代码示例 - 不同方式定义函数指针 在下面的代码 , 分别使用上述章节中讲解三种方式 , 定义了函数指针 ; 代码示例 : // 包含 C++ 头文件 #include "iostream

12030

c语言函数指针用法_函数指针作为形参

文章目录 导引 指针函数 指针函数定义 指针函数三种写法 代码示例 函数指针 定义 代码示例 函数指针指针函数区别 定义不同 写法不同 用法不同 导引 函数指针指针函数,在学习 C 语言时候遇到这两个东西简直头疼...指针函数 指针函数定义 指针函数,简单来说,就是一个返回指针函数,其本质是一个函数,而该函数返回值是一个指针。...不过不建议这么使用,因为强制转换可能会带来风险。...调用函数指针方式也有两种: x = (*fun)(); 或者 x = fun(); 两种方式均可,其中第二种看上去和普通函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚指明这是通过指针方式来调用函数...函数指针指针函数区别 通过以上介绍,应该都能清楚理解其二者定义。那么简单总结下二者区别: 定义不同 指针函数本质是一个函数,其返回值为指针函数指针本质是一个指针,其指向一个函数

58220

C语言笔记】函数指针作为结构体成员

函数指针C语言中意义 在C语言程序,数据结构和算法是两个基本元素。C语言基本数据类型、结构体、数组和联合体是数据结构代表;C语言中函数则是算法代表。...只有将数据结构和算法有机结合才能构成具有一定功能程序。 函数指针应用 函数指针在嵌入式应用非常广泛,常常把函数指针作为结构成员、作为函数参数等。...如在物联网操作系统RT-Thread内核源码,有如下代码: 1、函数指针作为结构体成员 ?...2、函数指针作为函数参数 举例说明 建立一个结构体,用于四则运算(根据函数指针指向可以选择加法运算、减法运算、乘法运算、除法运算),如 typedef int (*fun_t)(int, int);...以上就是函数指针作为结构体成员笔记,如有错误欢迎指出!

3.3K30

c专题之指针---函数指针指针函数区别用法

,我理解是结构体类型是我们人为定义一种(符合计算机)数据类型),一般书上会叫复合类型,看书看最多是这个叫法(那是因为后面结构体里面定义各种数据类型变量,甚至函数定义,所以这个结构体就像一个“...一、指针函数函数指针区别: 1、其实在说这个区别时,我前面讲数组指针指针数组时候,已经说出了理解方法来去理解这个区别(而不用去死记硬背,过了一段时间没有用,就会忘记了。)...2、用示例来举例说明:      a、指针函数,: int *fun(int x); 这里的话因为运算符()优先级比*高,所以先确定是函数为核心,然后向外找,找到一个int *fun类型指针,所以就叫指针函数了...:  a、函数实质是一段代码,这一段代码在内存是连续分布(一个函数大括号括起来所有语句将来编译出来生成可执行程序是连续),所以对于函数来说很关键就是函数第一句代码地址,这个地址就是所谓函数地址...,在C语言中用函数名这个符号来表示,我们来试验代码测试: 二、总结:       还是那句话,最好检验自己疑惑方法,我觉得是自己有想法去写一个代码去测试,然后观察现象,并分析出结果,这样对自己非常有好处

48610

一看就会C语言笔记——指针函数函数指针、回调函数

//指针函数指针函数本质是一个函数,只不过返回值为某一类型指针(地址值)。 //函数返回值必须用同类型变量来接受,也就是说,指针函数返回值必须赋值给同类型指针变量。...那么作为变量当然也可以当做参数来使用。...老板就可以使用这个结果去做相关事情了。 //在这个环节,你只需要按照指定规则去做事,而经理不需要考虑事情是怎么做,他只需要把相应事情分配给对应的人去处理即可,然后将获取结果反馈给老板。...如果规则有变,只需要对应员工知道哪里改变了,而经理不需要关注这些细节。 //以上就是回调函数 小编给大家推荐一个学习氛围超好地方,C/C++交流企鹅裙:870963251!..."请输入三个数字:"); scanf("%d %d %d", & a, & b, & c); /* 与直接调用函数等价,d = max(max(a, b), c) */ d = p(p(a, b), c

2.4K00

C语言笔记】函数指针作为函数参数

函数指针有两种常用用法,一种是作为结构体成员,关于函数指针作为结构体成员用法可移步至上一篇【C语言笔记】函数指针作为结构体成员进行查看。另一种是函数指针作为函数参数。...这一篇分享函数指针作为函数参数。 一、函数指针作为函数参数 函数指针可以作为一个参数传递给另一个函数。这时函数指针使用就像普通常量和变量一样。...例如,在C语言通用工具库stdlib.h,有如下一个函数原型: void qsort(void *, size_t, size_t, int (comp*)(const void *, const...void *)) 这是在C通用工具库声明一个快速排序算法函数,其可以用来排序int类型、float类型以及字符串数据,可以按从小到大顺序也可以按从大到小顺序排序。...其关键在于函数指针comp指向函数具体实现。 二、举例说明 上一节我们使用函数指针作为结构体成员来实现四则运算,这里一节我们稍微修改一下代码,使用函数指针作为函数参数来实现四则运算。

9K11

C语言函数传参:指针指针

这是道哥第013篇原创 前言 今天同事问了一个问题:在函数参数传递指针指针,很常用一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...size个字节空间,然后返回给main函数pData指针。...到这里就已经看到程序崩溃原因了:虽然给指针p赋值了,但是实参pData内容一直为空,因此从do_malloc函数返回之后,pData仍然是一个空指针,所以就崩溃了。...在do_malloc函数,调用系统函数malloc成功之后返回所分配空间首地址,关键是要把这个首地址送给pData指针,也就是说要让pData指针变量值等于这个堆空间首地址。...那应该如何通过中间一个函数来完成这个功能呢,如下代码: void do_malloc(char **p, int size) { *p = (char *)malloc(size + 1);

2.1K20
领券