C++:函数指针是个什么玩意儿?
#include<iostream>
using namespace std;//函数类型由函数的返回类型和形参类型决定,与函数名无关
//把函数名去掉、形参名去掉就是函数类型,下面的函数类型就是void (int)
void LZB(int i)
{cout << i << endl;
}// 这是一个函数指针
// 首先判断括号内,表明lzb是一个指针
// 右侧是形参列表,所以这个指针指向的是一个函数
// void表示函数的返回类型
void (*lzb)(int);//这个指针的类型和上面的函数类型相同
//这里如果写成void *lzb(int)意义就不一样了
//表示声明一个名为lzb的函数,且函数返回的是void *类型int main()
{lzb = LZB;//lzb = &LZB;//把函数名作为一个值的时候,会自动转换为指针//且这个指针刚好和声明的lzb指针类型一致(可不嘛,lzb指针就是照着函数声明的)//也可以对函数名取地址,两种操作都是函数的地址,完全等价lzb(520);return 0;
}
输出结果:520
我们可以直接使用指向函数的指针调用该函数,且无需解引用指针
(*lzb)(520) //同样输出520,注意要把*和lzb用括号括起来
这个玩意儿挺头大
后面再记录吧。
使用typedef
//定义三个函数指针
void (*lzb1)(int);
void (*lzb2)(int);
void (*lzb3)(int);//使用typedef定义三个函数指针
typedef void (*lzb_base)(int);
//这是lzb_base就是一个类型名,相当于int
//不能直接给lzb_base赋值,就像不能直接 int = 3;
lzb_base lzb1;
lzb_base lzb2;
lzb_base lzb3;
C++:函数指针是个什么玩意儿?相关推荐
- c/c++中的函数指针和指针函数
定义 1.指针函数,本质是函数,返回值为指针,形如,int *pfun(int, int),由于"*"的优先级低于"()"的优先级,所以等同于int *(pfu ...
- 函数指针amp;绑定: boost::functoin/std::function/bind
see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...
- 0709 C语言常见误区----------函数指针问题
1.函数指针的定义 对于函数 void test(int a, int b){ // } 其函数指针类型是void (* ) (int , int), 注意这里第一个括号不能少, 定义一个函数指针,v ...
- java跨函数跳转_C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧...
1.方法一 要对绝对地址0x100000赋值,我们可以用 (unsigned int * ) 0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做? ...
- 函数指针(就做个笔记)
1,函数的地址 #include <stdio.h> int main(){int i=0;printf("main=%p\n",main);printf(" ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- 结构体中定义函数指针
结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...
- C++中函数指针的使用
A function pointer is a variable that stores the address of a function that can later be called thro ...
- C++函数指针解引用
声明函数的引用: int f( double ); int (* const pf)(double) = f; // pf是指向函数f()的常量指针 int (&rf)(doubl ...
最新文章
- Journey源码分析三:模板编译
- xp系统下访问的两个组策略设置
- c#_continue 和 break 的区别
- ajax判断用户名是否已经存在
- hive mysql 删除表_Hive-删除表(drop、truncate的区别)
- OpenGL ES之GLSL实现仿抖音“灰度滤镜”和“颠倒滤镜”效果
- [Leetcode][第347题][JAVA][前K个高频元素][优先队列][堆][遍历set/map]
- 参考文献的类型及标识
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
- CentOS7中使用systemctl列出启动失败的服务
- 自己编写的C语言实时时钟代码
- java sql 工具类_Java防SQL注入工具类
- 最全面的应届毕业生落户上海指南(2021)
- 在星巴克聊聊“一找小七”
- AS3中常用到的公式 {转}
- Interface接口自动化登录图文验证码问题的解决办法
- 小型团队项目管理_寻找小型工程团队的项目管理平衡
- 【xla】三、【构图阶段】EncapsulateSubgraphsPass
- Atmel爱特梅尔AT89S52单片机开发实训装置,QY-DPJ12
- hcs12 microcontroller 笔记
热门文章
- 国外著名java技术资料网站
- SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
- 开发环境中Docker的使用
- 行政区划代码转为字典形式
- 机器学习论文泛读总结
- Kafka Producer 发送消息源码阅读
- LINUX系统中动态链接库的创建和使用
- python3安装模块的命令_如何为PythonPython3安装gi模块?
- 丁丁打折网卷能用吗_超市货架上就能买到的好用护发素,平价好用,打折时可以多囤点...
- OpenJudge NOI 1.7 10:简单密码