返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言函数指针数组实现计算器功能
  • 297
分享到

C语言函数指针数组实现计算器功能

2024-04-02 19:04:59 297人浏览 八月长安
摘要

目录一、概念        二、用途三、案例:计算器      (1)基础代码编译:(2)使

一、概念        

数组:一个存放相同类型数据的存储空间。

int arr[10];
//数组arr的每个元素是int

指针数组:一个存放指针的数组。

int* arr[10];
//数组arr的每个元素是int*

函数指针:一个指向函数的指针,一般用函数名表示。

int Add(int x, int y)
{
    return x + y;
}
 
int main()
{
    int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int (*p)[10] = &arr; 
    //取出数组的地址,p就是指向数组arr的指针,数组中每个元素类型是int,p就是数组指针
    
    //引出函数指针的问题
    int (*pf)(int, int) = &Add;
    //是一个指向函数的指针 - 存放函数的地址

需要注意的是,函数名是函数的地址,&函数名还是函数的地址,在visual stdio编译环境下能打印出同一地址。这里的函数指针pf是指向函数Add,其中(int, int)表示函数需要的两个形参类型是int,函数返回值类型是int。        

函数指针数组:一个存放指针的数组,其中的指针都指向各自的函数。

//函数指针
int (*p)(int, int) = Add;
int (*p)(int, int) = Sub; 
//Add和Sub是函数名,需要传入的两个形参和返回值类型都是int
 
//将上面两个同类型的函数指针放入数组中,得到函数指针数组
int (* arr[2]) (int, int) = {Add, Sub};

二、用途

函数指针数组的用途:转移表

三、案例:计算器      

(1)基础代码编译:

#include <stdio.h>
//实现加减乘除
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int sub(int a, int b)
{
    return a * b;
}
int sub(int a, int b)
{
    return a / b;
}
int main()
{
    int x, y;
    int input = 1;
    int ret = 0;
    do
    {
        printf( "***************************\n" );
        printf( "    1:add         2:sub    \n" );
        printf( "    3:mul         4:div    \n" );
        printf( "***************************\n" );
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
                printf("输入操作数: ");
                scanf("%d %d", &x, &y);
                ret = add(x, y);
                printf("ret = %d\n", ret);
                break;
        case 2:
                printf("输入操作数: ");
                scanf("%d %d", &x, &y);
                ret = sub(x, y);
                printf("ret = %d\n", ret);
                break;
        case 3:
                printf("输入操作数: ");
                scanf("%d %d", &x, &y);
                ret = mul(x, y);
                printf("ret = %d\n", ret);
                break;
        case 4:
                printf("输入操作数: ");
                scanf("%d %d", &x, &y);
                ret = div(x, y);
                printf("ret = %d\n", ret);
                break;
        case 0:
                printf("退出程序\n");
                break;
        default:
                printf("退出程序\n");
                break;
        }
    } while (input);
 
    return 0;
} 

这里用到的switch循环语句,实现了数据的输入、输出和函数调用,结构与功能简单易懂,但主函数中代码太过冗长,重复的代码很多,这样的结构导致后期拓展函数功能需改动的地方非常多。

(2)使用函数指针数组的实现:

#include <stdio.h>
//实现加减乘除
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int sub(int a, int b)
{
    return a * b;
}
int sub(int a, int b)
{
    return a / b;
}
int main()
{
    int x, y;
    int input = 1;
    int ret = 0;
    int (*p[5])(int x, int y) = { 0, add, sub, mul, div };//转移表
    while (input)
    {    
        printf( "***************************\n" );
        printf( "    1:add         2:sub    \n" );
        printf( "    3:mul         4:div    \n" );
        printf( "***************************\n" );
        printf("请选择:");
        scanf("%d", &input);
        if ((input <= 4 && input >= 1))
        {
            printf("输入操作数: ");
            scanf("%d %d", &x, &y);
            ret = (*p[input])(x, y);
        }
        else
        {
            printf( "输入有误\n" );
            printf( "ret = %d\n", ret );
        }
        return 0;
}
       

敲重点!!!     敲重点!!!  敲重点!!!

这里我们看到函数指针数组的用法是:数组内容(函数指针)解引用得到函数地址,接着传入参数,进行函数调用,结果返回一个整形(int)数据由ret接收。

ret = (*p[input])(x, y);

在代码中若出现许多函数同返回值类型,同参数类型时,使用函数指针数组是一个能大大简化代码,消除重复代码,是结构更加轻易易懂,为后期拓展更多功能函数提供便利。

到此这篇关于C语言函数指针数组实现计算器功能的文章就介绍到这了,更多相关C语言 计算器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言函数指针数组实现计算器功能

本文链接: https://lsjlt.com/news/145698.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言函数指针数组实现计算器功能
    目录一、概念        二、用途三、案例:计算器      (1)基础代码编译:(2)使...
    99+
    2024-04-02
  • C语言运用函数指针数组实现计算器功能
    本文实例为大家分享了C语言运用函数指针数组制作计算器的具体代码,供大家参考,具体内容如下 先来回顾一下概念: 指针数组 —— 存放指针的数组 函数指针 —— 存放函数地址的指针 函数...
    99+
    2024-04-02
  • C语言用函数指针实现一个特别的计算器
    目录函数指针实现计算器程序的思想用函数指针调用加减乘除函数完整代码与运行截图函数指针 函数指针就是存放函数地址的指针。 函数指针的重要内容: 1.函数指针的使用:函数的类型(指针)(...
    99+
    2024-04-02
  • C语言的数组指针与函数指针详解
    目录前言函数指针语法数组指针与指针数组总结前言 数组指针和函数指针都是C语言比较难的知识点,尤其是函数指针,并且函数指针在开发中有着巨大的作用。 函数指针语法 定义一个函数指针,并通...
    99+
    2024-04-02
  • C语言如何使用数组指针与函数指针
    这篇文章主要为大家展示了“C语言如何使用数组指针与函数指针”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用数组指针与函数指针”这篇文章吧。函数指针语法定义一个函数指针,并通过函数指针...
    99+
    2023-06-29
  • 用C语言实现计算器功能
    本文实例为大家分享了用C语言实现计算器功能的具体代码,供大家参考,具体内容如下 代码如下: #include<stdio.h> //C语言编写计算器程序 ^_^ v...
    99+
    2024-04-02
  • C语言数组指针和指针数组怎么应用
    这篇文章主要介绍“C语言数组指针和指针数组怎么应用”,在日常操作中,相信很多人在C语言数组指针和指针数组怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言数组指针和指针数组怎么应用”的疑惑有所帮助!...
    99+
    2023-06-30
  • C语言指针怎么实现数组逆序
    可以通过指针来实现数组逆序。下面是一个示例代码:```c#include void reverseArray(int *arr, i...
    99+
    2023-09-14
    C语言
  • c语言怎么向函数传递数组指针
    在C语言中,可以通过指针的方式向函数传递数组指针。以下是一个示例代码: #include void printArray(int...
    99+
    2023-10-25
    c语言
  • C语言函数指针详解
    目录Introduction函数指针 Function PointersExercise 1:qsort中的函数指针Exercise 2:总结Introduction 上一个lab的...
    99+
    2024-04-02
  • C语言数组指针和指针数组有什么区别
    这篇文章主要讲解了“C语言数组指针和指针数组有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言数组指针和指针数组有什么区别”吧!区别:指针数组本身是一个数组,数组的元素都是指针,...
    99+
    2023-06-20
  • c语言指针数组和数组指针有什么区别
    C语言中,指针数组和数组指针是两种不同的概念。 指针数组(Pointer Array):指针数组是一个数组,其中的元素都是指针类型...
    99+
    2023-10-27
    c语言
  • C语言实现简易计算器功能
    本文实例为大家分享了C语言实现简易计算器功能的具体代码,供大家参考,具体内容如下 表达式求值项目(多功能计算器)。该项目主要包含了10个模块,10项功能: 1:加法运算:主要进行两个...
    99+
    2024-04-02
  • C语言中怎么使用指针函数和函数指针
    本篇内容介绍了“C语言中怎么使用指针函数和函数指针”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、指针函数当一个函数声明其返回值为一个指针...
    99+
    2023-06-16
  • C语言中如何使用指针函数和函数指针
    这篇文章给大家介绍C语言中如何使用指针函数和函数指针,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、指针函数当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。格式:...
    99+
    2023-06-17
  • C语言指针数组和数组指针的区别有哪些
    这篇“C语言指针数组和数组指针的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言指针数组和数组指针的区别有哪些...
    99+
    2023-07-04
  • c语言的指针数组详解
    指针如何指向数组,并读取数组中的元素: #include <stdio.h> int main() { int arr[3] = {1,2,3}; int *p;...
    99+
    2024-04-02
  • C语言函数指针怎么用
    这篇文章主要介绍“C语言函数指针怎么用”,在日常操作中,相信很多人在C语言函数指针怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言函数指针怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!定义...
    99+
    2023-06-22
  • C语言指向函数的指针实例分析
    这篇文章主要介绍“C语言指向函数的指针实例分析”,在日常操作中,相信很多人在C语言指向函数的指针实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言指向函数的指针实例分析”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-02
  • C语言运用回调函数实现计算器
    本文实例为大家分享了C语言运用回调函数实现计算器的具体代码,供大家参考,具体内容如下 回调函数概念: 回调函数是一个通过函数指针调用的函数,也就是将函数的地址作为参数传递给另一个函数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作