文章目录

  • 一、指针数组用法 ( 自我结束能力 )
  • 二、完整代码示例

一、指针数组用法 ( 自我结束能力 )


在上一篇博客 【C 语言】数组 ( 指针数组用法 | 命令行参数处理 ) 中的主函数中的 char**env 参数 , 这是个 指针数组 , 其传入参数后 , 退化为 二级指针 , 但其有着 自我结束能力 , 该 指针数组 中的最后一个指针 指向的地址 为 NULL , 即 指针变量 的值为 0 , 这就代表着指针数据的最后一个元素 ;

/*** @brief 主函数入口* @return*/
int main(int argc, char* argv[], char**env)
{}

在不知道数组个数的情况下 , 为 数组 最后一个元素 赋值 0 , '\0' , NULL 等值 , 用于判断该元素是否是 数组的最后一个元素 ;

下面定义的 指针数组 , 不知道该 指针数组 中的 指针元素个数 , 但是知道该数组中最后一个元素的值为 '\0' ,

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

那么可以通过 menu_array[i] != NULL 作为循环控制的终止条件 ;

    // 循环终止条件设置为 menu_array[i] != NULLfor(i = 0; menu_array[i] != NULL; i++){printf("%s\n", menu_array[i]);}

特别注意 , 0 , '\0' , NULL 这三个值都是 000 , 其作用的结果相同 ;

  • C 中有如下宏定义 , 0 就是 NULL ;
#define NULL 0
  • '\0' 是对 0 字符进行字符转义 , 就是 ASCII 码 的 0 值 , 其值还是 0 ;

指针数组 的自我结束能力 , 就是在 指针数组 最后一个元素 设置 0 , '\0' , NULL 这三个值中的任意一个值 ; 遍历时 , 使用 menu_array[i] != NULL 作为循环终止条件 ;

二、完整代码示例


完整代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/*** @brief main* @return*/
int main()
{// 循环控制变量int i = 0;// 指针数组 , 数组中存放着指针 , 每个指针指向 字符串 常量// 字符串常量在 全局区 中char* menu_array[] = {"query","update","insert","delete",NULL};// 循环终止条件设置为 menu_array[i] != NULLfor(i = 0; menu_array[i] != NULL; i++){printf("%s\n", menu_array[i]);}// 命令行不要退出system("pause");return 0;
}

执行结果 :

query
update
insert
delete
请按任意键继续. . .

【C 语言】数组 ( 指针数组用法 | 自我结束能力 )相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. c语言中的指针语法,C语言中指针的用法介绍

    C语言中指针的用法介绍 for(int i=0;i { num+=*s;s++; } return num; ) 这个例子中的函数 fun统计一个字符串中各个字符的 ASCII 码值之和.前面说了,数 ...

最新文章

  1. etcd — 架构原理
  2. modelsim仿真正确FPGA运行不正确的可能原因 - cm4写寄存器错
  3. matplotlib 笔记:设置x轴 y轴文字
  4. sudo uograde 之后 需要重装显卡驱动
  5. 如何卸载 Internet Explorer 7
  6. PHP调用类函数定义位置,OOP PHP – 如何有选择地调用类的构造函数中定义的特定方法?...
  7. Windows8 Metro应用开发之C#(3)- 数据控件ListView、GridView、FlipView
  8. Linux常用命令汇总 - Linux Shell Cheat Sheet
  9. Windows驱动程序之cat文件介绍
  10. 用计算机如何计算投资回收期,动态投资回收期怎么算的?
  11. 如何刷微博,怎么刷微博下拉框,怎样刷微博相关搜索
  12. 微信支付之App支付
  13. “21 天好习惯”第一期-4
  14. 动态折线图,制作原来是这么简单
  15. C#使用西门子S7 协议读写PLC DB块
  16. Android 6.0 JNI原理分析 和 Linux系统调用(syscall)原理
  17. C与C++成长之路——c提高二之指针强化和字符串
  18. blogger_如何在博客中添加推文并调试基本JavaScript:为什么Twitter.com/JavaScript/Blogger JSONP Widget停止工作?...
  19. openwrt用WEB刷固件型号不对问题强行处理
  20. 陆金所年营收618亿:平安持股41.6% 市值一年蒸发300亿美元

热门文章

  1. 2014 I/O归来:Google连接一切
  2. Intent进阶 和 Intent-filter 学习笔记
  3. 利用ISCSI存储技术构建IP存储网络(安全篇)
  4. WinForm创建系统托盘以及操作注册表
  5. HTML5 应用的现状与前景
  6. python 自动克隆gitlab web前端
  7. 4. 寻找两个有序数组的中位数
  8. leetcode 73 矩阵置零 Python
  9. java的集合:List、Set和Map
  10. 网络号、主机号、子网号、子网掩码、子网划分