网站首页 > java教程 正文
函数、指针、数组结合到一起就是函数指针数组。
首先它是一个数组,这个数组的元素是函数指针(指向函数的指针)。
如:
int(*fn[])(int,int);
一般的函数指针是这样定义的:
int(*fn)(int,int);
一般的指针函数是这样定义的:
int* fn (int,int);
表示一个函数,它的返回值是一个指针:int*。
运算符的优先级不仅体现在一般的表达式中,也体现在类似上面的声明表达式中。指针运算符*的优先级要低于函数运算符()。
所以对于int* fn (int,int);
它最终是一个函数,是一个返回指针的函数。
对于int(*fn)(int,int);
用括号来提升了优先级,它最终是一个指针,是一个指向函数的指针,称为函数指针。
对于int(*fn[])(int,int);
先要分析括号内的部分,*的优先级低于[],所以它最终是一个数组,是一个数组元素是指针的数组,其中的指针是函数指针,所以最终它是一个函数指针数组。
基本思路是从内核开始层层外推,层层加定语。也就是:数组→指针数组→函数指针数组:数组元素是函数指针,指针是指向函数的指针。
函数指针数组的初始化:
int(*fn[])(int,int)={add,minus,divide,multiple}; //add,minus,divide,multiple是函数名
以下是实例:
#include<iostream> using namespace std; int add(int a,int b){return a+b;} int minus(int a,int b){return a-b;} int divide(int a,int b){return a*b;} int multiple(int a,int b){return a/b;} int(*fn[])(int,int)={add,minus,divide,multiple}; int cal(int a, int b, int opp) { return fn[opp](a,b); } void main() { int a=5, b=3; cout<<cal(a,b,0)<<" "<<cal(a,b,1)<<" "<<cal(a,b,2)<<" "<<cal(a,b,3)<<" "<<endl; system("pause"); } //8 2 15 1
-End-
- 上一篇: Java基础:数组的特别之处(java,数组)
- 下一篇: Java中的数组使用(java中数组用法)
猜你喜欢
- 2024-10-08 数组作为容器底层的数据结构,还是了解一下吧
- 2024-10-08 “全栈2019”Java原子操作第九章:atomic包下原子数组介绍与使用
- 2024-10-08 04、数组的注意事项 #Java(数组函数的使用方法)
- 2024-10-08 Java中的数组使用(java中数组用法)
- 2024-10-08 小高分享(47)Java中的基本数据类型与数组
- 2024-10-08 Java基础:数组的特别之处(java,数组)
- 2024-10-08 定义结构体数组并初始化,定义结构体数组struct stu
- 2024-10-08 ArrayList初始化-Java那些事儿(java arraylist用法)
- 2024-10-08 看完这篇,轻松弄懂STM32 C语言变量的定义和初始化
- 2024-10-08 Java编程基础阶段笔记 day05 数组
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)