文章目录

  • 一、指针数组用法 ( 菜单选择 )
  • 二、完整代码示例

一、指针数组用法 ( 菜单选择 )


使用场景 : 用户输入一个 字符串 , 判定该 字符串 是菜单中的哪个选项 ;

定义 指针数组 , 数组中存放着指针 , 每个指针指向 字符串 常量 , 字符串常量在 全局区 中的 常量区 ;

    // 指针数组 , 数组中存放着指针 , 每个指针指向 字符串 常量// 字符串常量在 全局区 中char *menu_array[] = {"query","update","insert","delete"};

将 指针数组 菜单 和 指针数组 大小 , 以及要查询的 字符串 ;.

  • 计算数组大小 : 使用如下宏定义 , 计算数组大小 ;
// 计算数组长度
#define LEN(array) (sizeof(array) / sizeof(*array))
  • 函数参数定义 :
/*** @brief searche_menu_table 菜单列表 中查找 字符串位置* @param menu_table 指针数组 , 数组元素是指针 , 指针指向字符串* @param array_size 指针数组 中 元素个数* @param str 要查找的字符串* @param menu_position 字符串位置* @return 返回函数是否执行成功*/
int searche_menu_table(const char *menu_table[], const int array_size, const char* str, int *menu_position)
{}

遍历 指针数组 , 查找字符串位置 :

    // 遍历字符串数组for(i=0; i < array_size; i++){// 如果找到字符串 , 则返回if(strcmp(str, menu_table[i]) == 0){*menu_position = i;return ret;}}

二、完整代码示例


完整代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 计算数组长度
#define LEN(array) (sizeof(array) / sizeof(*array))/*** @brief searche_menu_table 菜单列表 中查找 字符串位置* @param menu_table 指针数组 , 数组元素是指针 , 指针指向字符串* @param array_size 指针数组 中 元素个数* @param str 要查找的字符串* @param menu_position 字符串位置* @return 返回函数是否执行成功*/
int searche_menu_table(const char *menu_table[], const int array_size, const char* str, int *menu_position)
{// 函数返回值, 标志函数执行结果状态 , 0 表示执行成功int ret = 0;// 循环控制变量int i = 0;// 验证指针合法性if (menu_table==NULL || str==NULL || menu_position==NULL){ret = -1;printf("error : menu_table==NULL || str==NULL || menu_position==NULL");return ret;}// 遍历字符串数组for(i=0; i < array_size; i++){// 如果找到字符串 , 则返回if(strcmp(str, menu_table[i]) == 0){*menu_position = i;return ret;}}// 在 menu_table 字符串数组中 , 没有找到 str 字符串// 返回 -2 错误状态ret = -2;// 设置 -1 位置*menu_position = -1;return ret;
}/*** @brief 主函数入口* @return*/
int main()
{// 记录字符串在菜单中的位置int menu_position = 0;int i = 0;// 指针数组 , 数组中存放着指针 , 每个指针指向 字符串 常量// 字符串常量在 全局区 中char *menu_array[] = {"query","update","insert","delete"};// 在 字符串指针数组 中 查询对应字符串searche_menu_table( menu_array, LEN(menu_array),"delete", &menu_position);// 打印查找到的位置printf("menu_position = %d\n", menu_position);// 命令行不要退出system("pause");return 0;
}

执行结果 :

menu_position = 3
请按任意键继续. . .

【C 语言】数组 ( 指针数组用法 | 菜单选择 )相关推荐

  1. 【C 语言】数组 ( 指针数组用法 | 自我结束能力 )

    文章目录 一.指针数组用法 ( 自我结束能力 ) 二.完整代码示例 一.指针数组用法 ( 自我结束能力 ) 在上一篇博客 [C 语言]数组 ( 指针数组用法 | 命令行参数处理 ) 中的主函数中的 c ...

  2. 【c语言】指针数组和数组指针-解释和用法

    数组指针与指针数组: 优先级:()>[]>* 首先我们要说的一个知识点是 int *p[3]   和  int (*p)[3]的区别 int (*p)[3]   因为()优先级高,首先说明 ...

  3. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  4. 【C语言】指针进阶 - 指针数组 数组指针 数组指针传参 函数指针 指向函数指针数组的指针

    目录 一.字符指针 一道题 二. 指针数组 解引用打印数组元素 &数组名 数组名 字符指针初始化 三.数组指针 取数组地址-放在数组指针里 类型 数组指针的使用 二维数组传参 判断 四.数组参 ...

  5. c语言动态指针数组--一种伪二维数组

    通过动态内存分配实现c语言动态指针"数组". 其实这种结构并非是一种数组,只是手动实现的一种类似数组的结构,实现类似数组的功能.应该可以说是一种伪数组结构吧. #include & ...

  6. c语言--函数指针数组

    c语言–函数指针数组 1.指针数组的概念 本质是数组,数组的每一个元素是一个指针变量: 2.指针数组的定义方法 类型说明符 *数组名[元素个数] void test() {int a=10,b=20, ...

  7. 【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )

    文章目录 总结 一.使用 数组类型* 定义数组指针 二.完整代码示例 总结 typedef int(ArrayType)[3];ArrayType *p = NULL; 一.使用 数组类型* 定义数组 ...

  8. 「C语言」指针数组 数组指针 指针函数 函数指针

    相信很多人和我一样,有着这样的恐惧,那就是这四个玩意怎么也分不清,这都是啥啥啥啥呢?今天我们来具体分析一下.其实要具体了解这四个概念,只需要了解符号优先级,并关注最后两字,你就成功了一半. 符号优先级 ...

  9. C语言之指针数组与数组指针详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.指针数组 一维指针数组的基本使用 一维指针数组的进阶使用 二.数组指针 - 数组为一维数组 - 数组为二维数组时 ...

最新文章

  1. MyBatis-13MyBatis动态SQL之【where、set、trim】
  2. 全球及中国汽车物流行业未来发展方向与投资机遇研究报告2022版
  3. Mybatis的模糊查询
  4. json tcl_确定TCL中变量的类型
  5. 修复病毒破坏的文件关联并恢复程序图标
  6. 会议容易中吗_【留学评估】美国留学后就业真的和想象中的一样容易吗?
  7. Nginx配置location及rewrite规则
  8. Django----bootstrap导航栏的使用
  9. pytorch张量_PyTorch张量-详细概述
  10. Node.js Web开发框架
  11. 情感计算在淘宝UGC的应用
  12. 奔腾4 2.4CPU计算机硬件能升级吗,CPU怎么升级啊
  13. 谈谈平安京资源的npk解包思路
  14. 基于自适应惯性权重的樽海鞘群算法
  15. OpenCV学习之多通道图像的混合
  16. 那些惊艳你岁月的古诗词
  17. restTemplate封装工具类
  18. 股市低迷 期权策略表现突出
  19. 帆软决策系统后台中左上角的这个logo和名字如何修改?
  20. 简单游戏Roll_A_Ball开发笔记

热门文章

  1. 图说:Word 15 阅读模式
  2. 插入,冒泡,选择,快速排序,二分查找
  3. legend3---4、lavarel中session使用注意
  4. LeetCode——15. 3Sum
  5. Redis 4.0.2分布式锁的Java实现
  6. 关于js里的document.compatmode
  7. mysql -h139.129.205.80 -p test_db_dzpk db.dump
  8. go语言切片切片与指针
  9. Swift学习------常量与变量
  10. Linux学习笔记:Linux分区