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

    文章

    480

    浏览量

    70519
  • C语言编程
    +关注

    关注

    6

    文章

    90

    浏览量

    21095
  • 周立功
    +关注

    关注

    38

    文章

    130

    浏览量

    37596
  • 数组
    +关注

    关注

    1

    文章

    416

    浏览量

    25921
  • 函数指针
    +关注

    关注

    2

    文章

    56

    浏览量

    3775

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

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

收藏 人收藏

    评论

    相关推荐

    立功手把手教你嵌入式编程函数指针指针函数的应用

    作者经常听嵌入式软件开发者说,“我几乎不用函数指针……”。言下之意,那些复杂的语法似乎毫无用处,而实际上很多人根本没有认识到其无穷的威力……本文将进入程序设计与数据结构》函数
    的头像 发表于 08-29 11:36 1.6w次阅读

    立功教你程序设计技术:做好软件模块的分层设计,回调函数这样

    立功教授数年之心血之作《程序设计与数据结构》以及《面向AMetal框架与接口的编程(上)》,电子版已无偿性分享到电子工程师与高校群体,在公众号回复【
    的头像 发表于 08-30 10:24 9554次阅读

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

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

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

    立功教你程序设计结构体:内存对齐和基本数据类型

    我们知道,数组指针是相同类型有序数据的集合,但很多时候需要将不同类型的数据捆绑在一起作为一个整体来对待,使程序设计更方便。在C语言中,
    的头像 发表于 09-01 13:47 7977次阅读
    <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语言编程:用数组,构造一个双重指针

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

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

    我们知道,数组指针是相同类型有序数据的集合,但很多时候需要将不同类型的数据捆绑在一起作为一个整体来对待,使程序设计更方便。在C语言中,
    的头像 发表于 09-06 09:27 9583次阅读
    <b class='flag-5'>周</b><b class='flag-5'>立功</b><b class='flag-5'>教你</b><b class='flag-5'>学</b><b class='flag-5'>C</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/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,
    发表于 08-27 17:48 715次阅读

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

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

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

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

    C语言程序设计介绍

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

    C语言程序设计教程之二维数组如何应用二维数组的资料概述

    本文档的主要内容详细介绍的是C语言程序设计教程之二维数组如何应用二维数组的资料概述主要内容包括了:1 了解二维
    发表于 10-26 16:48 3次下载

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

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

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

    理解函数指针函数指针数组函数指针
    的头像 发表于 06-29 15:38 1.5w次阅读
    理解<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语言函数可以返回指针、结构体,为什么不能返回数组? 下面一步一步来分析: 1 函数不能返回
    的头像 发表于 03-29 11:18 1988次阅读