博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于函数指针的总结
阅读量:7035 次
发布时间:2019-06-28

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

1.先看下面几个声明的含义:

 int (*f)();  f是一个函数指针,他所指向的函数返回一个整型值

 int  *(*f)(); f也是一个函数指针,所指向的函数的返回值是一个整型指针

 int  *f[ ];    下标的优先级更高,所以f是一个数组,它的元素类型是指向整型的指针

int  (*f[ ])();  f是一个数组,数组元素的类型是函数指针,它所指向的函数的返回值是一个整型值

int  *(*f[ ])();  f是一个数组,数组元素的类型是函数指针,它所指向的函数的返回值是一个整型指针

2 关于函数指针的使用

  函数指针最常见的两个用途是转换表和作为参数传递给另一个函数。

1)简单声明一个函数指针并不意味着它马上就可以使用。和其他指针一样,对函数指针执行

间接访问之前必须把它初始化为指向某个函数。下面的代码段说明了一种初始化函数指针的方法。在函数指针的初始化之前具有f的原型是很重要的,否则编译器就无法检查f的类型是否与pf所指向的类型一致。

   int  f(int);

   int  (*pf)( int ) = &f;(这个初始化中的&是可选的,因为函数名被使用时总是由编译器把它转化为函数指针)

2)对函数指针的调用,可以使用以下三种形式:

   int  ans;

   ans = f (25 );

   ans = (*pf)(25);

   ans = pf(25);

第一种使用方式:简单使用名字调用函数f。函数名f首先被转换为一个函数指针,该指针指定函数在内存中的位置。然后,函数调用操作符调用该函数,执行开始于这个地址的代码。

第二种使用方式:对pf执行间接访问操作,它把函数指针转换一个函数名。这个转换并不是真正需要的,因为编译器在执行函数调用操作符转换回去。这个语句跟第一种方式中的效果完全一样

第三种使用方式:

 

 

转载于:https://www.cnblogs.com/honglihua8688/p/3686136.html

你可能感兴趣的文章
Dell(戴尔)电脑恢复BIOS出厂设置的方法
查看>>
VMware Horizon View Config Tool 用户使用手册之一 -- VCT介绍和安装之前的准备
查看>>
桥接和路由模式区别
查看>>
使用注解hibernate 单元测试 问题
查看>>
黑马程序员-Java基础加强之反射
查看>>
汇编学习——使用Linux系统调用
查看>>
灯泡开关小程序
查看>>
PagerTabStrip简单使用方式2
查看>>
SHELL脚本基础讲解
查看>>
PHP 数据库命令行的使用
查看>>
有赞公告设置
查看>>
win7系统开机遇到reboot and select proper boot device错误解决方法
查看>>
我的收藏
查看>>
pycharm 调试
查看>>
JAVA项目-日志服务配置
查看>>
检测来电
查看>>
交换机的基本原理与配置
查看>>
在Linux上创建磁盘阵列———RAID-5
查看>>
配置静态路由实现两个公司网路互联
查看>>
ShiroFilterFactoryBean源码及拦截原理深入分析
查看>>