C语言---指针数组和数组指针,函数指针

news/2024/12/22 13:11:22/

指针数组和数组指针

数组指针

指向数组的指针

作用:方便的操作数组中的各种数据

例:

int* p = arr;

int (*p)[5]

指针数组

存放指针的数组

作用:用来存放多个指针

例:

int *arr[5]

int (*p)[5]和int *p[5]的区别

int (*p)[5] 这个声明定义了一个指针 ,指向一个包含5个整数的数组。

int *p[5] 这个声明定义了一个包含5个元素的数组 ,每个元素都是指向整数的指针

函数指针

格式:

返回值类型(*指针名)(形参列表)

例:int (*p)(int,int) = add;

作用:

利用函数指针,可以动态的调用函数

拓展

函数指针数组

形参完全相同,且返回值一致的函数可以放入同一个函数指针数组内

简易计算器代码案例
#include<stdio.h>
int add(int num1,int num2);
int reduce(int num1,int num2);
int multiply(int num1,int num2);
int divide(int num1,int num2);
int main()
{int num1,num2,choice;   //定义一个数组来存放4个函数指针//指针数组int *arr[5]   //函数指针int (*p)(int,int) = add;int (*arr[4])(int,int) = {add,reduce,multiply,divide};printf("请输入你要进行计算的两个整数(之间用/分隔):");scanf("%d/%d",&num1,&num2);printf("请选择你要进行什么计算(1:加、2:减、3:乘、4.除):");scanf("%d",&choice);//排除异常输入,当choice等于1、2、3、4时才进行计算if(choice == 1 || choice == 2 || choice == 3 || choice == 4){//int (*p)(int,int)定义一个函数指针//(arr[choice-1])将数组内用户选择的算法函数指针传递给pint (*p)(int,int) = (arr[choice-1]);//调用函数指针pint num = p(num1,num2);printf("结果为%d\n",num);}else{printf("暂时只可以选择加减乘除哦\n");}return 0;
}
//加法
int add(int num1,int num2)
{return num1+num2;
}
//减法
int reduce(int num1,int num2)
{return num1-num2;
}
//乘法
int multiply(int num1,int num2)
{return num1*num2;
}
//除法,考虑除数不可为0
int divide(int num1,int num2)
{if(num2 != 0){return num1/num2;}else{printf("除数不可以为0\n");return 0;}
}

http://www.ppmy.cn/news/1506339.html

相关文章

【RN】实现markdown文本简单解析

需求 支持文本插入&#xff0c;比如 xxx {product_name} xxx &#xff0c;如果提供了product_name变量的值为feedback&#xff0c;则可以渲染出 xxx feedback xxx。支持链接解析&#xff0c;比如 [baidu](https://www.baidu.com/)&#xff0c;可以直接渲染成超链接的形式。支持…

分享中建海龙科技的代表性建筑案例

中建海龙科技作为一家在建筑行业颇具影响力的企业&#xff0c;以其独特的建筑理念和先进的施工技术&#xff0c;创造了许多令人瞩目的成功建筑案例。其中最具代表性的是北京桦皮厂胡同8号楼的“原拆原建”项目和深圳市华章新筑项目。 北京桦皮厂胡同8号楼的“原拆原建”项目&a…

24年电赛——自动行驶小车(H题)基于 CCS Theia -陀螺仪 JY60 代码移植到 MSPM0G3507(附代码)

前言 只要搞懂 M0 的代码结构和 CCS 的图形化配置方法&#xff0c;代码移植就会变的很简单。因为本次电赛的需要&#xff0c;正好陀螺仪部分代码的移植是我完成的。&#xff08;末尾附全部代码&#xff09; 一、JY60 陀螺仪 JY60特点 1.模块集成高精度的陀螺仪、加速度计&…

AI学习记录 - 如何进行token理论知识,以GPT2为举例

AI学习记录已经发了十几篇&#xff0c;大佬们可以看看&#xff0c;如果有帮助动动小手点赞 token入门版&#xff0c;有空会更新具体代码操作&#xff0c;能学到一点东西的话&#xff0c;大佬们点个赞&#xff01;&#xff01;&#xff01; GPT4当中&#xff0c;我们提问问题是…

【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)

Redis 的主从复制模式下&#xff0c;一旦主节点由于故障不能提供服务&#xff0c;需要人工进行主从切换&#xff0c;同时大量的客户端需要被通知切换到新的主节点上&#xff0c;对于上了一定规模的应用来说&#xff0c;这种方案是无法接受的&#xff0c;于是 Redis 从 2.8 开始…

windows系统的docker desktop安装 openjdk22 和 maven 3.9.8 的环境

​ 安装 Docker Desktop: 如果尚未安装 Docker Desktop&#xff0c;请从 Docker 官网 下载并安装 Docker Desktop。 创建 Dockerfile: 在你的开发目录中&#xff0c;创建一个名为 Dockerfile 的文件。这是 Docker 构建镜像所需的配置文件。 打开 Dockerfile 并添加以下内容以…

使用es-hadoop同步hive和es之间数据

&#x1f4bb;近期在华为云连接es时的时候发现不能输入账号密码&#xff0c;后面联系华为工程师了解到&#xff0c;华为云默认是非安全模式&#xff0c;即不需要输入账号密码。 如果对你有所帮助&#xff0c;欢迎点赞收藏关注不迷路哦&#x1f493; 目录 使用es-hadoop同步h…

算法力扣刷题记录 七十【70. 爬楼梯及算法性能分析:时间复杂度和空间复杂度】

前言 动态规划章节第二篇。记录 七十【70. 爬楼梯】 一、题目阅读 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xf…