博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码常识--函数指针
阅读量:6680 次
发布时间:2019-06-25

本文共 723 字,大约阅读时间需要 2 分钟。

很早的时候课上见过函数指针,后来就再也没有遇到过。以后我会留心标准C++里是否还用这个东西。函数指针说起来是个指针变量,指向一个函数的入口地址。函数的入口地址是什么,暂且不去细究,总之和普通变量地址,结构体地址,类地址一样,有了这个地址,就有了这个地址指向的实体。

关于函数指针的几点常识:

1.函数指针的声明

函数类型 (*指针变量名)(形参列表);

“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,如果不加括号,代码就成了声明一个返回类型为指针类型的函数(指针函数),后面的“形参列表”表示指针变量指向的函数所带的参数列表。

例如:

int (*f)(int x);

2.函数指针的赋值

函数名和数组名一样代表了函数代码的首地址,函数名和数组名都是地址常量(不可修改,不可赋值,只能做右值),因此在赋值时,直接将函数指针指向函数名就行了。

注意:赋值时要求函数指针和他指向函数的格式一致才可以赋值,即函数返回类型一致,参数列表一致。否则无法赋值。

另外,赋值语句的语法格式,和函数调用格式有点奇怪,如下面的代码:

1 int print(int x) 2 { 3     cout<
<

也就是说,p的值竟然和(*P)的值是一样的。有人认为,C语言中,本着指针的使用原理,函数指针使用时加*(dereference operator);C++中为跟函数对象统一,所以不加*。因此,语法上函数指针使用时加不加*都一样。

转载于:https://www.cnblogs.com/kevinGaoblog/archive/2012/05/02/2479749.html

你可能感兴趣的文章
基础知识--JAVA注解ElementType
查看>>
kickstart部署centos6.2 x86_64
查看>>
salt 的用户管理
查看>>
我封装的全文检索之solr篇
查看>>
NFC的第一次接触
查看>>
RHEL7 Connection closed by foreign host.
查看>>
Nodejs开发框架之Loopback介绍
查看>>
微信小程序下拉刷新使用整理
查看>>
ubuntu12.04禁用客人会话
查看>>
我的友情链接
查看>>
JVM垃圾收集器与内存分配策略
查看>>
分析Linux 文件系统访问控制列表
查看>>
Confluence WIKI 安装、破解及添加汉化包(Windows)
查看>>
一起入门Citrix_XenDesktop7系列 二-- 跟着图片通过XenDesktop7交付(发布)应用与共享桌面...
查看>>
MyBatis学习手记(一)MaBatis入门
查看>>
SCTF-2014 writeup(部分)
查看>>
Elasticsearch 连接查询
查看>>
Retrofit入门
查看>>
设置Exchange 通讯组接收外部组织邮件
查看>>
观点:正在消逝的运维江湖
查看>>