文档章节

c/c++基础回顾-函数指针

IT小伙
 IT小伙
发布于 2015/05/26 11:53
字数 390
阅读 21
收藏 0

1.定义函数指针:typedef 返回值类型 (*名称)(参数),例如typedef int (*pFun)()

2.函数指针涉及函数指针类型强制转换,一般情况下,要避免强转,在函数类型和函数指针表示的函数类型相同时才进行赋值操作。

typedef int (*pFun)() ;
pFun p ;
/*max表示已定义的函数
*下面两种赋值操作均对,效果一样
*/
p = max ;
p = &max ;

在你确定函数类型在强转时不会影响程序结果时可以进行转换。例如返回值为int和void的函数之间的转换。c和c++中存在不同

/*c 函数指针类型转换
*返回值为void和int的函数指针类型转换,两个方向都是隐式转换?
*返回值类型隐式转换就算了,貌似跟函数参数个数和类型没太大关系?
*/
int max(int a){}  
typedef void (*pFun)() ;
pFun p ;
p = max ;//编译正确,隐式转换??
p= &max ;
void max(){}
typedef int (*pFun)() ;
pFun p ;
p = max ;//编译也正确
/**
*c++中转换时必须显式的强制转换,转换时添加类型说明符
*/

3.函数指针应用

    1.函数指针数组,用于解决switch case语句中数量过多,替换switch case语句

    2. 。。。(还有那些好的应用??)

4.对于成员函数指针声明时需添加类和范围操作符::,例如class A{} typedef int (A::*pFun)()

© 著作权归作者所有

IT小伙
粉丝 1
博文 9
码字总数 1773
作品 0
南充
程序员
私信 提问
C语言编程学习程序解析:C语言的指针和函数返回值解析

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/27
0
0
计算机专业C语言编程学习重点:指针化难为易

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/31
0
0
C语言编程新手入门基础学习:使用函数必须知道的3点注意事项

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/06/01
0
0
const static在c c++中的作用

一.C语言中的const const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const可以在一定程度上提高程序的健壮性,但是程序中使用过多的const,可能在对代码...

y_x
2011/11/17
492
0
从 C++ 到 Objective-C 的快速指南

简介 当我开始为iOS写代码的时候,我意识到,作为一个C++开发者,我必须花费更多的时间来弄清楚Objective-C中怪异的东西。这就是一个帮助C++专家的快速指南,能够使他们快速的掌握Apple的iOS...

oschina
2014/05/10
11K
30

没有更多内容

加载失败,请刷新页面

加载更多

MySQL8.0.17 - Multi-Valued Indexes 简述

本文主要简单介绍下8.0.17新引入的功能multi-valued index, 顾名思义,索引上对于同一个Primary key, 可以建立多个二级索引项,实际上已经对array类型的基础功能做了支持 (感觉官方未来一定...

阿里云官方博客
27分钟前
3
0
make4.1降级 make-3.81、2错误

在编译 make-3.82 的时候出现如下错误提示 glob/glob.c:xxx: undefined reference to `__alloca'` 修改 /glob/glob.c // #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC......

Domineering
28分钟前
2
0
Rainbond集群的安装和运维的原理

本文将解读Rainbond集群的安装和运维的原理,使用户基本了解Rainbond的安装机制和运维重点,便于用户搭建大型Rainbond集群。 1.Rainbond集群节点概述 1.1 节点分类 属性 类型 说明 manage 管...

好雨云帮
40分钟前
5
0
好程序员大数据学习路线分享UDF函数

1.为什么需要UDF? 1)、因为内部函数没法满足需求。 2)、hive它本身就是一个灵活框架,允许用自定义模块功能,如可以自定义UDF、serde、输入输出等。 2.UDF是什么? UDF:user difine fun...

好程序员官方
42分钟前
4
0
Groovy中 Base64 URL和文件名安全编码

Base64 URL和文件名安全编码 Groovy支持Base64编码很长一段时间。 从Groovy 2.5.0开始,我们还可以使用Base64 URL和Filename Safe编码来使用encodeBase64Url方法对字节数组进行编码。 结果是...

白石
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部