当前位置: 首页 > wzjs >正文

怎么把网页设置为不信任网站马鞍山网站建设文

怎么把网页设置为不信任网站,马鞍山网站建设文,建设ftp网站怎么创建数据库,无实体店营业执照申请引言 在代码中,我们可以直接调用函数,那么为什么还要运用函数指针数组呢? 解答:在代码中,虽然可以直接调用函数,但使用函数指针数组有许多独特的优势,以下从多个方面详细解释使用函数指针数组…

引言

在代码中,我们可以直接调用函数,那么为什么还要运用函数指针数组呢?

解答:在代码中,虽然可以直接调用函数,但使用函数指针数组有许多独特的优势,以下从多个方面详细解释使用函数指针数组的原因

1. 实现多态性

在不使用面向对象编程的多态机制时,函数指针数组可以模拟多态行为。多态允许不同的函数以统一的方式被调用,提高代码的灵活性和可扩展性。

示例代码

#define  _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> // 定义不同的函数 
void color1() {printf("This  color is red.\n");
}void color2() {printf("This color is cyan.\n");
}void color3() {printf("This color is gray.\n");
}int main() {// 定义函数指针数组 void (*colors[])() = { color1, color2, color3 };int choice = 0;printf("Enter a number between 0 and 2: ");scanf("%d", &choice);// 根据用户输入调用相应的函数 if (choice >= 0 && choice < 3) {colors[choice]();}else {printf("Invalid choice.\n");}return 0;
}

解释:
在这个例子中,通过函数指针数组
func,可以根据用户的输入动态地选择调用不同的函数,实现了简单的多态效果。

2. 简化代码逻辑

当需要根据不同的条件调用不同的函数时,使用函数指针数组可以避免大量的 if-elseswitch 语句,使代码更加简洁和易于维护。

示例代码

a.switch语句版

#define  _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void meun()
{printf("*************************\n");printf("*****1.sum    2.sub******\n");printf("*****3.mul    4.div******\n");printf("*****0.exit       *******\n");printf("*************************\n");
}int Sum(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 Div(int x, int y)
{return x / y;
}int main()
{int input = 0;int x = 0;int y = 0;int ret = 0;do{meun();printf("请选择计算模式:");scanf("%d", &input);switch (input){case 1:printf("请输入两个操作数:");scanf("%d %d", &x, &y);ret=Sum(x, y);printf("%d\n", ret);break;case 2:printf("请输入两个操作数:");scanf("%d %d", &x, &y);ret=Sub(x, y);printf("%d\n", ret);break;case 3:printf("请输入两个操作数:");scanf("%d %d", &x, &y);ret=Mul(x, y);printf("%d\n", ret);break;case 4:printf("请输入两个操作数:");scanf("%d %d", &x, &y);ret=Div(x, y);printf("%d\n", ret);break;case 0:printf("退出游戏");break;default:printf("选择错误,请重新选择");break;}} while (input);return 0;
}

b.函数指针数组

#define  _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void meun()
{printf("*************************\n");printf("*****1.sum    2.sub******\n");printf("*****3.mul    4.div******\n");printf("*****0.exit       *******\n");printf("*************************\n");
}int Sum(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 Div(int x, int y)
{return x / y;
}int (*pf[5])(int, int) = { NULL, Sum, Sub, Mul, Div };int main()
{int input = 0;int x = 0;int y = 0;int ret = 0;do{meun();printf("请选择计算模式:");scanf("%d", &input);if (input == 0){printf("退出计算器\n");break;}else if (input>=1 &&input<=4){printf("请输入两个操作数:>");scanf("%d %d", &x, &y);ret = pf[input](x, y);printf("%d\n", ret);}else{printf("选择错误,请重新选择\n");}}while (input);return 0;
}

解释
如果不使用函数指针数组,需要使用
switch 语句来根据用户的选择调用不同的函数,代码会变得冗长。使用函数指针数组可以简化代码逻辑,提高代码的可读性。

3. 动态调用函数

在某些情况下,需要在运行时动态地决定调用哪个函数,函数指针数组可以方便地实现这一点。

示例代码

#include <stdio.h> 
#include <stdlib.h> // 定义不同的函数 
void hello() { printf("Hello!\n"); 
} void goodbye() { printf("Goodbye!\n"); 
} int main() { // 定义函数指针数组 void (*func_array[])(void) = {hello, goodbye}; int random_index = rand() % 2; // 动态调用函数 func_array[random_index](); return 0; 
} 

解释
在这个例子中,使用
rand() 函数随机生成一个索引,然后根据该索引动态地调用函数指针数组中的函数。

4. 实现回调机制

函数指针数组可以用于实现回调机制,允许在特定事件发生时调用不同的处理函数。

示例代码

#define  _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>//定义回调函数
void Print1to100()
{int i = 0;for (i = 1;i <= 100;i++){printf("%3d ", i);}
}//中间函数
void Do(void (*thing)())
{thing();
}int main()
{Do(Print1to100);return 0;
}

解释:

回调函数就是利用中间函数将多个函数通过中间函数来调用,回调函数可以丰富我们的代码


文章转载自:

http://Yci0u9BX.gkdhf.cn
http://owW8noX2.gkdhf.cn
http://qccHoAFX.gkdhf.cn
http://UEPRKq3t.gkdhf.cn
http://jFvjEQQo.gkdhf.cn
http://mzN5NTUA.gkdhf.cn
http://Glk8G4AE.gkdhf.cn
http://15AOPbNQ.gkdhf.cn
http://pbEAm0ar.gkdhf.cn
http://lMHmaFQo.gkdhf.cn
http://fVgQoGOB.gkdhf.cn
http://bJt9Kdyk.gkdhf.cn
http://QjHXmCMe.gkdhf.cn
http://xm4v52WB.gkdhf.cn
http://gO0veJ8Z.gkdhf.cn
http://G2e9KBOX.gkdhf.cn
http://pskbShRn.gkdhf.cn
http://CEGlcaOe.gkdhf.cn
http://OAZmFcsj.gkdhf.cn
http://YBo21ZiO.gkdhf.cn
http://Byb02Etj.gkdhf.cn
http://5n9RnkHy.gkdhf.cn
http://g9oYGrCU.gkdhf.cn
http://z93V2Csa.gkdhf.cn
http://8SFG51UO.gkdhf.cn
http://ANKB9Ozd.gkdhf.cn
http://hEVH1D97.gkdhf.cn
http://O3qtjgct.gkdhf.cn
http://RdA9cRn7.gkdhf.cn
http://0xOano7A.gkdhf.cn
http://www.dtcms.com/wzjs/643644.html

相关文章:

  • 创建网站的优势如何提升wordpress网站速度
  • 做网站前期工作北京摇号网站维护
  • 网站建设什么因素最重要制作公司工作网站
  • 做网站的基础架构做网站编辑心得
  • 达州网站开发做引流推广的平台
  • 建网站规则东城做网站
  • 新乡集团网站建设大型医院设计网站建设
  • 廊坊企业网站外包筑博设计在深圳排名
  • 做产地证网站免费网站建设浩森宇特
  • 购物网站建设价格如何建购物网站
  • 杭州网站建设是什么网站建设中的html页面下载
  • 无锡 网站建设长沙优化官网收费标准
  • 网上免费个人网站潍坊信息网网站建设
  • 做网站怎样设置搜索引擎wordpress 载入很慢
  • 国外素材设计欣赏网站html前端网站开发
  • 自建购物网站多少钱wordpress 没有 sql
  • 手机app游戏制作软件珠海seo快速排名
  • 西宁网站推广网页顶部导航栏设计
  • 网站建设合同标的网络营销策划的流程及要点
  • 彩票网站定制宽带费用多少钱一年
  • 国外做足球数据的网站有哪些北京网站建设方案排名
  • 北京做网站公司的排名摄影网站设计图片
  • 自己做的网站怎么发布到网上wordpress 如何制作模板
  • ps 做网站切图hois.skxy.wordpress
  • 医药网站源代码某网站seo诊断分析和优化方案
  • 黑色个人网站欣赏常平网站
  • 学校网站建设软件推荐广州网页设计培训教程
  • 网站建设报价表表格下载东南网
  • 网站建设的系统简介wordpress ality 预览
  • 微信知彼网络网站建设找人做网站要密码吗