IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】使用函数指针做一个与众不同的计算器 -> 正文阅读

[C++知识库]【C语言】使用函数指针做一个与众不同的计算器

函数指针

函数指针就是存放函数地址的指针。
函数指针的重要内容:
1.函数指针的使用:函数的类型(指针)(函数的形参类型)= 函数名;注意:函数的形参那里是不需要形参的变量名的。,如果函数没有形参,就不需要填任何东西,void也不行。这么使用完之后,这个指针就是一个函数指针了。
2.函数指针调用函数的方法:****(指针)(实参);注意:这里的指针有两种表达方式,比如定义了一个叫*p 的函数指针,函数的返回类型为空,没有形参。这里的调用就可以写成(*p)();也可以写成p(); 这两种方式都可以写,但为了方便,不推荐使用第一种。
3.函数指针可以作为函数的形参,如果需要传递实参,可以直接传函数名。

实现计算器程序的思想

首先计算器要有最基本的运算,也就是加减乘除,其次我们要写一个简单的菜单,然后让用户进行选择,选择完之后就是输入数字进行运算并且打印出来,考虑到用户可能要进行多次的使用,所以可以加一些循环语句,让用户可以多次使用。
基本上实现计算器我们要考虑的问题都在这了,在这个程序中,最重要的就是用数组指针来调用加减乘除的函数,其它部分都很简单,下面我们来实现这部分的函数。

用函数指针调用加减乘除函数

先看一下代码:

int add(int x, int y)
{
	return x + y;
}

int sub(int x, int y)
{
	return x - y;
}

int mul(int x,int y)
{
	return x * y;
}

int exc(int x, int y)
{
	return x / y;
}

void func(int *(pf)(int, int y))
{
	int x = 0;
	int y = 0;
	printf("请输入两个数:");
	scanf("%d%d", &x, &y);
	int ret = pf(x, y);
	printf("结果为:%d\n", ret);
}

在func这个函数中,形参是一个函数指针,因为加减乘除返回值,形参都是一样的,所以只要传递不同的函数进去,前面说过形参是函数指针可以直接传递函数名,这样就在func里可以实现对应函数的运算并且打印出来了。

完整代码+运行截图

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu() 
{
	printf("|-------------------|\n");
	printf("|-------1.加--------|\n");
	printf("|-------2.减--------|\n");
	printf("|-------3.乘--------|\n");
	printf("|-------4.除--------|\n");
	printf("|-------0.退出------|\n");
	printf("|-------------------|\n");
}

int add(int x, int y)
{
	return x + y;
}

int sub(int x, int y)
{
	return x - y;
}

int mul(int x,int y)
{
	return x * y;
}

int exc(int x, int y)
{
	return x / y;
}

void func(int *(pf)(int, int y))
{
	int x = 0;
	int y = 0;
	printf("请输入两个数:");
	scanf("%d%d", &x, &y);
	int ret = pf(x, y);
	printf("结果为:%d\n", ret);
}
int main()
{
	int n = 0;
	int flag = 1;
	while (flag)
	{
		menu();
		printf("请选择你想要的运算:");
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			func(add);
			break;
		case 2:
			func(sub);
			break;
		case 3:
			func(mul);
			break;
		case 4:
			func(exc);
			break;
		case 0:
			flag = 0;
			break;
		default:
			printf("选择错误,请重新选择!\n");
			break;
		}
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:02:42  更:2022-07-17 16:06:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:45:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码