《C关键字分析》之typedef与callback
《C关键字分析》之typedef与callback
一、typedef定义函数指针类型
1.源码
2.c
- #include <stdio.h>
- typedef int (*HAL_CALL_BACK)(int,int);
- int test(int a,int b);
- int add(void* func,int a,int b);
- int main(){
- // printf("TK------>>>test is 0x%lx\n",test);
- int result = add((void*) test,3,4);
- printf("TK------>>>>result is %d\n",result);
- return 0;
- }
- int test(int a,int b){
- return a + b;
- }
- int add(void* func,int a,int b){
- HAL_CALL_BACK test2 = (HAL_CALL_BACK)func;
- int (*test1)(int,int) = (HAL_CALL_BACK)func;
- //printf("TK------->>>>>func is 0x%lx\n",func);
- return test1(a,b);
- }
2.编译运行
gcc -o 2 2.c
./2
- TK------>>>>result is 7
二、函数指针类型
1.理解int (* func)(int ,int )
在上面的表达式中从左到右有四个运算符()、*、();
运算符的优先级()比*高,()的结合方向是自左到右,*的结合方向是自右到左;
()结合是从左到右,这是定义了一个指针变量func,接下来是后括号,表明是定义一个函数类型的指针func;
接下来说明该变量func是一个指向,参数是两个int、返回值是一个int的函数,的指针变量。
2.源码
1.c
- #include <stdio.h>
- //typedef int (*HAL_CALL_BACK)(int,int);
- int test(int a,int b);
- int add(int func(int,int),int a,int b);
- int main(){
- // printf("TK------>>>test is 0x%lx\n",test);
- int result = add(test,3,4);
- printf("TK------>>>>result is %d\n",result);
- return 0;
- }
- int test(int a,int b){
- return a + b;
- }
- int add(int func(int,int),int a,int b){
- int (*test1)(int,int) = func;
- //printf("TK------->>>>>func is 0x%lx\n",func);
- return test1(a,b);
- }
2.编译和运行
gcc -o 1 1.c
./1
- TK------>>>>result is 7
《C关键字分析》之typedef与callback相关推荐
- 《C关键字分析》之extern用法
<C关键字分析>之extern用法 一.假设为三方提供库源码和头文件 1.共享库部分 sanf.c #include <stdio.h> int a; void hello() ...
- mysql数据生成词云图_CVPR2018关键字分析生成词云图与查找
今日目标:爬取CVPR2018论文,进行分析总结出提到最多的关键字,生成wordCloud词云图展示,并且设置点击后出现对应的论文以及链接 对任务进行分解: ①爬取CVPR2018的标题,简介,关键字 ...
- C语言中关键字const、typedef
const:const是C语言的一个关键字,是用来定义常量的.const是常属性的意思,当一个变量被const修饰之后,其值不能再被改变了,但它仍然是一个变量,只不过有了常属性. 我们如何才能验证这一 ...
- Java基础三个排序详解_继承粗解语法关键字分析
集合存放数据的容器,存放的数据可以是基本类型也可以是引用类型,数据类型必须一致,存放数据的空间是连续的即地址连续,长度固定 声明数组变量 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量 ...
- 3、mysql索引优化一:Explain关键字分析
作为一个Java开发,在我们日常工作中,对于mysql的使用中涉及最多的恐怕就是写SQL了,一定遇到过sql执行慢的问题,那么SQL优化工作就显得格外重要.有了对mysql执行过程以及索引实现原理了解 ...
- MySQL_explain关键字分析查询语句
版权声明:本文为博主原创文章,未经博主允许不得转载. 通过对查询语句的分析,可以了解查询语句的执行情况.MySQL中,可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句. EXPLAIN语 ...
- sql优化之explain关键字分析
explain是非常重要的关键字,要善于运用它. 通过explain我们可以获得以下信息: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少 ...
- ElasticSearch7.3学习(二十一)----Filter与Query对比、使用explain关键字分析语法
1.数据准备 首先创建book索引 PUT /book/ {"settings": {"number_of_shards": 1,"number_of ...
- 多线程并发的解决方案 volatile synchronized notify notifyAll wait关键字分析
2019独角兽企业重金招聘Python工程师标准>>> 1.ThreadLocal用法 在java中,如果一个变量需要被多个线程访问,可以使用volatile来声明它为"易 ...
最新文章
- What is the purpose for IT Pro in Windows 10 Creators Update
- zoj——3556 How Many Sets I
- es-04-mapping和setting的建立
- 排序算法之low B三人组
- SAP Customer Data Cloud支持的Social Media channel
- 怎样下载安装python_Windows系统上如何安装Python和pip
- 深入理解HashMap(原理,查找,扩容)
- fastdfs-配置存储服务器storage
- 一个while的小小问题
- C#网络编程之面向连接的套接字
- Jquery头像编辑器
- 免费天气预报API接口
- python requests默认超时时间_requests获取响应时间和超时
- 【FJ 2016 Day5】冷战(coldwar)
- 用Bert做英法机器翻译
- Python解决羊车门问题
- python中write函数%啥意思_python write( )函数
- 手把手教你配置苹果APNS推送服务
- 【STM32学习笔记】#001 前期准备
- ASEMI整流二极管MR754参数,MR754图片,MR754应用