typedef函数指针
2015-07-10 16:13
288 查看
由于之前学习C++这块内容并没有经过太多实践,这块内容已经忘记了不少,现在学到动态库用到这块内容,又重新整理了。接下来的几天将会学习更多的动态库静态库的知识,学完之快内容之后,就学习excel等office方面编程技术!
常规的函数指针是这样定义的:
typedef函数指针是这样定义的:
常规的函数指针是这样定义的:
1 ////这里有一个函数体fun1 void fun1(int a) { return a*3; } //////这里定义了一个函数指针pfun1 void (*pfun1)(int); ///////这里的pfun1就可以指向fun1函数了 pfun1=fun1; //////pfun1指向了fun1之后,就可以使用pfun1调用fun1函数了 (*pfun1)(5); //返回结果是5*3=15 ///////备注:这里的定义了函数指针的形式可能比较难理解,其实认真想一想也确实应该这样定义的,因为我们在声明一个变量的时候,是这样声明的:int a; 声明一个int类型的指针的时候是这样声明的:int *pa; 这里声明指针的方式只不过是把变量名给挖空,然后填上(*指针变量名) 而已。 ////////同理,我们在声明函数指针的时候,也是和声明变量指针有些类似,也是把函数名给挖空,然后填上(*指针变量名),所以这样推断就有了void (*pfun1)(int)了,这个函数指针只能指向返回值类型为void,并且函数的参数只有一个int类型的函数。
typedef函数指针是这样定义的:
///////typedef定义的函数指针类型 /////这里定义有了一个函数fun2 double fun2 (int a,double b) { return a+b; } //////这里定义有了一个f_pfun函数指针类型,这里只是一个类型,并不是一个实际的变量 typedef double (*f_pfun)(int,double); /////上面定义了一个函数指针类型之后,就可以通过这个函数指针类型来定义函数指针了 f_pfun pfun; //这里声明了一个函数指针变量 pfun pfun=fun2; //这里讲这个pfun指向了fun2函数 //////备注:所以上面的typedef定义的函数指针类型是比较方便和明了的,因为typedef实际上就是定义一个新的数据类型,typedef有这样的一个作用,就可以用它来定义函数指针类型,这个定义的函数指针类型是能够指向返回值是double的,并且函数的参数只有int和double两个参数的函数。 //////typedef的用法为:typedef 原类型名 别名; /////所以这里定义的typedef double (*f_pfun)(int,double);就相当于把double (*) (int,double)定义成了另一个别名 f_pfun了。这个f_pfun就表示了函数指针类型了,注意这里的double (*)(int ,double)实际上不存在这样的写法,只是为了方便理解,这样的写法是不允许的,也是错误的!这样的写法并不代表是一个类型!!
相关文章推荐
- springmvc web应用程序 java
- C/C++校招笔试面试经典题目总结三
- JS 学习记录
- 关于新闻缓存设计
- spark web ui中的skipped的含义
- LAMP解析测试php
- C语言中strcat的实现方法
- SQLite实例
- android app 设计
- 从ETTI Touch 到 uevent 机制分析
- 【一天一个canvas】圆形区块(七)
- Bootstrap – 1.认识
- Python将阿拉伯数字转换为罗马数字的方法
- 安装chkrootkit 报 /usr/bin/ld: cannot find -lc出错
- 记录帖:重写dialog去掉黑边的样式设置
- php的变量
- 双缓冲绘图
- tomcat配置数据源
- Spring3+Mybatis3+Mysql+ivy+liquibase
- Hibernate 持久化对象的状态