0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

周立功教你学C语言编程与程序设计:这样写函数指针数组最好用

AGk5_ZLG_zhiyua 来源:未知 作者:电子大兵 2017-08-31 14:06 次阅读

第二章为程序设计技术,本文为2.1.4 函数指针数组。

>>>>2.1.4 函数指针数组

如果要实现一个袖珍式计算器,假设程序的其它部分已经读入2个数op1和op2,以及一个操作符oper,可以使用下面的代码对操作符进行测试,然后决定调用哪个函数。比如:

显然,对于一个具有上百个操作符的计算器来说,这条switch语句将会之很长。且为了使用switch语句,则表示操作符的代码必须是整数。如果它们是从0开始的连续整数,则可以使用转移表实现相同的任务,而转移表就是一个函数指针数组,该数组的每个元素是一个函数的地址。如果有以下声明:

其中,PF是一个指向返回值为double的函数的指针类型,该函数有两个double类型参数。假设需要声明一个包含4个元素的数组变量oper_func,用于存储4个函数的地址。即可使用PF定义一个存储函数指针的数组:

其中,oper_func为指向函数的指针的数组,上述声明与以下声明:

虽然形式不一样,但其意义完全相同。

如果给函数指针数组变量中的元素赋值,则与普通数组元素相同。比如:

在上述表达式中,除了等号右侧是函数名之外,这是一个正常的数组元素,因此,同样可以在定义中初始化指针数组变量的所有元素。创建一个转移表,需要声明并初始化一个函数指针数组,但一定要确保这些函数的原型出现在这个数组的声明之前。比如:

该语句初始化了4个元素,因此不再需要执行初始化的赋值语句。注意,初始化列表中各个函数名的正确顺序取决于程序中用于表示每个操作符的整型代码,这个示例中的ADD、SUB、MUL和DIV分别对应0、1、2、3.。其调用形式如下:

即oper从数组中选择正确的函数指针,函数调用操作符执行这个函数。当然,也可以去掉数组的大小,由初始化列表确定数组的大小。比如:

其中,大括号内的初始值个数确定了数组中元素的数目,因此函数指针数组的初始化列表与其它数组的初始化列表的作用一样。

在公众号后台回复关键字【编程】,即可在线阅读《面向AMetal框架与接口的编程(上)》和《程序设计与数据结构》两本书。

《面向AMetal框架与接口的编程(上)》书籍还在印刷中,具体开售时间另行通知。《程序设计与数据结构》书籍的淘宝购买链接如下,可复制到浏览器打开:

https://s.click.taobao.com/d3WStbw

延伸阅读

周立功:做好软件模块的分层设计必须掌握的回调函数

周立功:动态分布内存——free()函数与realloc()函数

周立功:动态分布内存——malloc()函数与calloc()函数

周立功:用数组,构造一个双重指针

周立功:你知道数组也能保存指针吗?

周立功:字符真正价值在于形成字符序列——字符串函数

周立功:字符真正价值在于形成字符序列——字符串的输入输出

周立功:字符真正价值在于形成字符序列——字符串的引用

周立功:字符能像整数一样计算

周立功:如何将二维数组作为函数参数传递

周立功:算法的泛化问题,你应该知道

周立功:泛型编程——实现代码复用

周立功:数组访问的四大方法与惯用法

周立功:数组的规定,你知道吗?

周立功:C语言数组与指针详解

周立功:实现和使用易重用的抽象接口

周立功:设计良好的程序接口需注意的5个事项

周立功:程序设计的新思维和新方法

周立功:拆分条件语句让代码更易理解——综合表达式与条件表达式 

周立功:拆分条件语句让代码更易理解——逻辑表达式

公众号介绍

致远电子官方微信公众号,一个汇聚500名工程师的研发测试分享平台,为您提供电子行业领先的产品技术与解决方案

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70361
  • C语言编程
    +关注

    关注

    6

    文章

    90

    浏览量

    20982
  • 周立功
    +关注

    关注

    38

    文章

    130

    浏览量

    37076
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25593
  • 函数指针
    +关注

    关注

    2

    文章

    53

    浏览量

    3737

原文标题:周立功:函数指针数组的使用方法

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    立功教你学C语言编程教你数组是如何保存指针

    虽然数组指针数组存储的都是数据,但还是有细微的差别。数组存储的是相同类型的字符或数值,而指针数组
    的头像 发表于 08-31 10:09 6726次阅读
    周<b class='flag-5'>立功</b><b class='flag-5'>教你</b>学C<b class='flag-5'>语言</b><b class='flag-5'>编程</b>:<b class='flag-5'>教你</b><b class='flag-5'>数组</b>是如何保存<b class='flag-5'>指针</b>的

    所有C语言数组指针的知识都在这里了!|周立功手把手教你学C语言编程

    数组作为函数的参数时,C语言函数的所有参数必须在函数内部声明。但是,由于在函数内部并没有给
    的头像 发表于 09-01 09:28 8073次阅读

    立功手把手教你学C语言编程:用数组,构造一个双重指针

    第一章为程序设计基础,本文为1.8.3 指针数组中的第二要点:字符串与指针指针、第三要点: 字符串与二维
    的头像 发表于 09-04 14:15 6465次阅读

    立功教你学C语言编程:结构体,使程序设计更方便——内置函数指针和嵌套结构体

    我们知道,数组指针是相同类型有序数据的集合,但很多时候需要将不同类型的数据捆绑在一起作为一个整体来对待,使程序设计更方便。在C语言中,这样
    的头像 发表于 09-06 09:27 9352次阅读
    周<b class='flag-5'>立功</b><b class='flag-5'>教你</b>学C<b class='flag-5'>语言</b><b class='flag-5'>编程</b>:结构体,使<b class='flag-5'>程序设计</b>更方便——内置<b class='flag-5'>函数</b><b class='flag-5'>指针</b>和嵌套结构体

    C语言数组名和指针

    指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于
    发表于 08-27 17:48 604次阅读

    C/ C++/ Java 程序设计经典教程》

    C++和Java)  ·继承和多态性(C++和Java)  ·泛型编程C++模板)  ·图形、GUI和多媒体(Java语言)  ·事件驱
    发表于 11-13 11:22

    分享几本不错的C语言书籍

    应该是立功公司的很多人的合作的,只是挂个立功的名号,但是这本书的确是一线嵌入式工程师写出来的,有很多的参考价值。推荐指数4颗星。目前没
    发表于 11-12 09:42

    C语言——指针数组函数

    C语言——指针数组函数基本解释   1、指针的本质是一个与地址相关的复合类型,它的值是数据存
    发表于 04-20 15:25

    新书创作谈:立功教授数十年之心血力作《程序设计与数据结构》

    整理出《程序设计与数据结构》这本书,其内容如同培训讲师的教案,是立功和团队的读书笔记和程序设计实践的心得。《程序设计与数据结构》重点阐述了
    发表于 05-15 18:04

    【完整资料】《程序设计与数据结构》立功数十年心血力作

    ,是立功和团队的读书笔记和程序设计实践的心得。《程序设计与数据结构》重点阐述了三大方向内容。C语言
    发表于 05-16 16:43

    c语言程序设计案例教程

    据类型和运算符、顺序程序设计、分支程序设计、循环结构、数组等。学习C语言一定要知道它的利器——指针
    发表于 07-20 07:25

    C语言程序设计介绍

    包括:C 语言概述,算法基础,数据类型、运算符与表达式,顺序 结构程序设计,选择结构程序设计,循环结构程序设计数组
    发表于 02-17 15:49 0次下载

    C语言程序设计教程之指针使用的课件免费下载

    本文档的主要内容详细介绍的是C语言程序设计教程之指针使用的课件免费下载指针使用主要内容 地址与指针
    发表于 11-16 17:47 15次下载
    C<b class='flag-5'>语言</b><b class='flag-5'>程序设计</b>教程之<b class='flag-5'>指针</b>使用的课件免费下载

    理解函数指针函数指针数组函数指针数组指针

    理解函数指针函数指针数组函数指针
    的头像 发表于 06-29 15:38 1.4w次阅读
    理解<b class='flag-5'>函数</b><b class='flag-5'>指针</b>、<b class='flag-5'>函数</b><b class='flag-5'>指针</b><b class='flag-5'>数组</b>、<b class='flag-5'>函数</b><b class='flag-5'>指针</b><b class='flag-5'>数组</b>的<b class='flag-5'>指针</b>

    【C语言进阶】“数组指针”和“指针数组”都是啥跟啥?

    【C语言进阶】“数组指针”和“指针数组”都是啥跟啥?
    的头像 发表于 08-31 13:21 1671次阅读