C/C++之函数指针
来源:互联网 发布:新开淘宝小店日志 编辑:程序博客网 时间:2024/06/07 03:12
函数指针
函数指针指向的是函数而不是对象
函数指针指向的是函数而不是对象
函数的类型是由返回值和参数决定的,函数名并不是函数类型的一部分(不管函数名怎么起,不影响函数类型)
bool lengthCompare(const string &, const string &);//其类型是:bool(const string&, const string&)//嗯,这样理解函数指针就方便多了,我们只是定义了一个指针取代了函数的名字而已bool (*pf)(const string &, const string &);
但若声明为:bool *pf(const string &, const string &);则是返回值为bool *,函数名为pf的函数,所以用括号先保证了指针(*pf)的存在
在使用函数名的时候,函数名其实已经转换为指针了。所以这个赋值没有问题:pf = lengthCompare;//pf指向了名字为lengthCompare的函数。上面已经定义了pf为指针,lengthCompare是函数名bool b1 = pf("hello", "goodbye"); //调用lengthCompare函数bool b2 = (*pf)("hello", "goodbye"); //作用同上bool b3 = lengthCompare("hello", "goodbye"); //作用同上//直接拿上面的定义和新定义的函数举例string::size_type sumLength(const string&, const string&);bool cstringCompare(const char*, const char*);pf = 0; //可以,pf没有指向任何函数pf = sumLength; //错误,返回值类型不同pf = cstringCompare; //错误,参数类型不同pf = lengthCompare; //可以,返回值和参数类型都相同/*这个例子进一步理解函数的类型:返回值和参数*/
同数组一样,不能直接返回数组,但是可以返回数组指针;同理,不能返回函数类型,只能返回函数指针
同数组作参数会被转换为数组指针一样,也没有函数类型的参数,写做参数时,自动转换为函数指针
//第三个参数转换为函数指针void useBigger(const string &s1, const string &s2,bool pf(const string &, const string &));//第三个参数转换为函数指针void useBigger(const string &s1, const string &s2,bool (*pf)(const string &, const string &));//调用上面声明的函数useBigger(s1, s2, lengthCompare);
0 0
- C-[之函数指针]
- c语言之函数指针
- C常见问题之函数指针
- C/C++之函数指针
- C语言之函数指针
- C语言之函数指针
- C语言之函数指针
- C语言之指针函数
- c/c++之函数指针
- Linux C之函数指针
- C学习之------C函数指针
- C++,C函数指针
- C/C++:函数指针
- C++----函数&函数指针
- C指针函数 && 函数指针
- c语言学习笔记之函数指针和指针函数
- C/C++ 之 指针函数 和 函数指针
- C语言之指针、数组和函数
- Smarty 显示大括号 | 在Smarty中计算数组元素的长度 | Smarty字符串拼接
- MIT《线性代数》第一课 线性方程组的几何解释
- cmd下查看远程桌面端口
- JS应用
- unity3d 代码动态添加,修改BoxCollider2D
- C/C++之函数指针
- mysql 导出表结构和表数据 mysqldump用法【自己留存】
- 基数排序【转载】
- Android HttpURLConnection的用法
- 清除记住的局域网共享密码
- 第二次实验
- netty4.0之TCP的server与client初探(与3.X版本变化)DEMO
- 计算机硬件常识:RAID以及硬RAID和软RAID的区别
- Android获取百度音乐的音乐下载地址和歌词下载连接