Day8 函数指针做函数参数
课堂笔记
课程回顾
数组指针语法梳理
//定义一个指针数组类型
typedef int (*PTypeArray)[10];
//定义一个指向数组的指针
PTypeArray mArray;
int a[10] = {0};
//对数组取地址,得到指向数组的指针
mArray = &a;
//这样就可以修改数组内的元素了
(*mArray)[0] = 20;
int (*MyPointer)[10];//变量,编译器会分配内存
MyPoint = &a;
(*MyPointer)[0] = 40;//不需要定义数据类型就可以定义指向数组的指针
函数指针语法梳理
int S (int a,int b)
{
return a+b;
}
//定义一个函数类型
typedef int (MyFuncPtr)(int a,int b);
//定义一个指针,指针指向特性类型的函数
MyFuncPtr *funcPtr = NULL;
//取函数入口地址并赋值
funcPtr = ∑
//函数指针调用函数
funcPtr(3,4);//间接调用
//定义一个函数指针类型
typedef int (*MyFuncPtr)(int a,int b);
//定义一个指针,指针指向特定类型的函数
MyFuncPtr funcPtr = NULL;
//取函数入口地址并赋值
funcPtr = ∑
//函数指针调用函数
funcPtr(3,4);//间接调用
函数指针做函数参数思想
//定义数据类型,函数指针数据类型
typedef int (*FuncPtr)(int a,int b);
//函数指针作为函数参数
int mainOp(FuncPtr funcPtr);
这样实现了多态的扩充效果,将多个函数指针放到一个数组中,就类似于一个虚函数表了.
函数指针正确调用案例
typedef int (*SQRTPROC)(int,int)//定义一个函数指针类型
SQRTPROC pFunction;//定义一个函数指针
HINSTANCE hInstance;//声明一个句柄
hInstance = ::LoadLibrary("DLL文件路径");//获取句柄的实例,也就是DLL的实例
//获取方法,读取函数的入口地址,VERIFY检测表达式是否为空
VERIFY(pFunction = (SQRTPROC*)::GetProcAddress(hInstance,"SqartRoot"));
C动态库升级为框架
基本需求
环境搭建
动态库中添加回调函数
回调函数缓存到动态库
C++基础课程知识点梳理
Day8 函数指针做函数参数的更多相关文章
- 函数指针做函数参数,其中有typedef的相关,感觉这是构成大河的小溪
#include<stdio.h> #include<stdlib.h> #include<string.h> int Funcadd(int a, int b) ...
- go语言基础之数组指针做函数参数
1.数组指针做函数参数 示例: package main //必须有个main包 import "fmt" //p指向实现数组a,它是指向数组,它是数组指针 //*p代表指针所指向 ...
- go语言基础之指针做函数参数用地址传递
1.指针做函数参数 示例: package main //必须有个main包 import "fmt" func swap(p1, p2 *int) { *p1, *p2 = *p ...
- go语言基础之指针做函数参数
1.指针做函数参数 示例: package main //必须有个main包 import "fmt" func swap(a, b int) { a, b = b, a fmt. ...
- Delphi 函数指针(函数可以当参数)
首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明 ...
- C++中的函数指针和函数对象总结
篇一.函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址.函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数. ...
- typedef void(*Fun) (void)是什么意思 函数指针(回调函数) 和函数对象总结
https://blog.csdn.net/FreeApe/article/details/49124043 bool (*pf)(const string &,const string &a ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- c++入门之函数指针和函数对象
函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性.函数对象的本质:()运算符的重载.我们通过一段代码来感受函数指针和函数对象的使用: int AddFunc(int a, ...
随机推荐
- Python的JAVA胶水——jpype
Python的JAVA胶水--jpype python可以作为一门胶水语言使用,可以用其它语言的优势来弥补自身如性能方面的不足,jpype就是在Python中使用jvm的第三方库 文档在这里 安装 s ...
- plsql 工具怎样导出 oracle 表结构
一.双击 plsql 工具,输入登陆用户.登陆密码以及登陆数据库名称,如下图: 二.菜单 Tools --> Export User Objects...,如下图: 三.进入导出界面后,可以选择 ...
- Java中Double类型的精确计算
import java.math.BigDecimal; public class DoubleUtil { private static final int DEF_DIV_SCALE = 5; / ...
- JS膏集05
JS膏集05 1.复习 闭包内的函数也可以使用参数 闭包的建议写法 ) 2.浅拷贝 相当于把一个对象中的所有的内容复制一份给另一个对象.直接复制. 或者说,就是把一个对象的地址给了另一个对象,它们指向 ...
- poj1703 Find them, Catch them(并查集)
https://vjudge.net/problem/POJ-1703 9ms多,卡着时间过了.上次一道并查集也是这样,总觉得要学一波并查集的优化.. 续:好像是可以只做一层存放敌人即可. #incl ...
- Spring中Bean的五个作用域
当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleton:单例模式,在整个Spring I ...
- dubbo学习汇总
1. dubbo官网 http://dubbo.io dubbo 作为一个阿里不用的框架,提供了非常多的资料.在分布式框架设计这方面. 2. 其他地方:http://shiyanjun.cn/arch ...
- jvm系列
一.jvm理论 1.1.jvm理论-总述 1.2.jvm理论-class文件 1.2.1.jvm理论-常量池-string 1.2.2.jvm理论-常量池-8种基本类型 1.3.jvm理论-字节码指令 ...
- IDEA攻略合辑
AS使用lombok注解报错:Annotation processors must be explicitly declared now. The following dependencies on ...
- 类中添加log4j日志
在编写代码的时候需要随时查看工作日志,查看工作日志的好处就是随时能检查出错误.所以我一般就需要在编写代码的前期添加工作日志,以便更好的查看相关错误输出. 以一个springmvc小demo为例子 主 ...