文章目录

  • 一、strcmp 函数
  • 二、指针数组排序 ( 字符串排序 )
  • 二、完整代码示例

一、strcmp 函数


strcmp 是 String Compare 缩写 , 该函数用于比较两个字符串 ;

strcmp 函数 :

#include <string.h>int __cdecl strcmp(const char *_Str1,const char *_Str2);
  • _Str1 < _Str2 : 返回负数 ;
  • _Str1 = _Str2 : 返回0 ;
  • _Str1 > _Str2 : 返回正数 ;

二、指针数组排序 ( 字符串排序 )


指针数组 中的每个元素都是 指向 字符串的指针 , 通过 strcmp 函数对字符串进行排序 , 代码如下 :

    // 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比for(i = 0; i < num; i++){for(j = i; j < num; j++){// 核心逻辑 : 如果 array[i] 大于 array[j]//          就交换两个元素if(strcmp(array[i], array[j]) > 0){// 交换 i, j 位置的指针变量tmp = array[i];array[i] = array[j];array[j] = tmp;}}}

上述代码是将字符串有小到大进行排序 ;

二、完整代码示例


代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void main()
{// 循环控制变量int i = 0, j = 0;// 数组大小int num = 0;// 排序时 , 交换指针变量时的临时变量char *tmp;/** 复杂指针阅读* 参考 https://blog.csdn.net/shulianghan/article/details/121453520 和* https://hanshuliang.blog.csdn.net/article/details/78568351#3____________________2803* 博客章节进行阅读** 复杂指针解析流程 :* 1. 中心标识符是 array* 2. 先往右看 , 遇到 [] , 说明这是一个数组 , 挖掉 array[] 内容 , 然后调转方向往左看* 3. 发现是 * , 说明数组中的元素是指针 , 挖掉 * , 往右看没内容 , 往左看* 4. 发现是 char , 说明指针指向的数据是 char 类型** array 是一个数组 , 数组中的元素的 char * 字符串** 这是 指针数组 , 数组元素 是 指针*/char *array[] = {"abc", "123", "258", "sfd"};// 计算数组大小num = sizeof(array) / sizeof(array[0]);// 打印上述数组for(i = 0; i < num; i++){// 使用 数组下标 与 指针 进行遍历 , 效果相同//printf("%s\n", array[i]);printf("%s\n", *(array + i));}// 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比for(i = 0; i < num; i++){for(j = i; j < num; j++){// 核心逻辑 : 如果 array[i] 大于 array[j]//          就交换两个元素if(strcmp(array[i], array[j]) > 0){// 交换 i, j 位置的指针变量tmp = array[i];array[i] = array[j];array[j] = tmp;}}}// 打印排序后的数组printf("\nSort:\n");for(i = 0; i < num; i++){// 使用 数组下标 与 指针 进行遍历 , 效果相同printf("%s\n", array[i]);//printf("%s\n", *(array + i));}// 命令行不要退出system("pause");return;
}

执行结果 :

【C 语言】二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 )相关推荐

  1. 【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )

    文章目录 总结 一.直接定义 数组指针 二.完整代码示例 总结 int (*p)[3] = NULL; 一.直接定义 数组指针 直接定义 数组指针 , 首先 , 定义一个普通数组 , 之后的 数组指针 ...

  2. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针

    指针: 指针是一个特殊的变量,因为存储的数据不仅仅是一个普通的数据,而是一个变量的内存地址,指针本身也是有内存地址的 指针的数据类型有int.float.bool.string.数组.结构体 指针的作 ...

  3. C++之指针探究(五):数组指针和二维数组

    前文:C++之指针探究(四):指针和二维数组 回顾:初始化二维数组时可以"偷懒":int array[2][3]={{0,1,2},{3,4,5}}; 可以写成:int array ...

  4. 字符串排序(函数,指针)(C语言实现)

    编写程序,用户输入n个(n<100)字符串(每个字符串长度小于100),按照字典顺序将字符串进行排序,并输出.要求在排序中使用指针数组完成. [输入说明] 输入第一行是一个整数数字,表示n,接下 ...

  5. 什么是指针?什么是数组指针?什么是指针数组?

    今天来探讨一下关于指针的一些知识 1.指针 #include <stdio.h>#if 0 1.指针变量的定义数据类型* 变量名;注意事项: 1.在定义指定变量时,*起到标志性的作用, 除 ...

  6. php数组指针什么用,php数组指针用法详解

    先给出一条结论,然后我们在用代码来证明这个结论吧,$arrtmp=$arr;在这个赋值表达式中我把$arr叫做赋值数组,把$arrtmp叫做被赋值数组,数组在赋值时,如果赋值数组的数组指针已经指向了数 ...

  7. 数组指针 sizeof 实现_C++数组指针!

    学习C++数组的时候,对数组的了解不是很深.也不知道,为什么声明一个数组,int a[10],为什么a就是数组的地址. 你可以这样理解,将a理解为指向数组头的一个指针,这样就好理解了.理解了之后确实好 ...

  8. 我两小时学完指针,你学会数组/指针与函数需要多久?

    数组与函数: 这段函数中 函数的参数是数组,注意数组作为函数参数时,数组名和数组元素个数时分别传递的. 指针与函数: 这段函数中的参数是指针变量,传入的是数组的数组名或者首元素的地址,然后用引领操作符 ...

  9. C语言:从键盘输入一个长度不定的字符串[C_004]

    目录 背景: Solution: 方案一:那就不要字符串 方案二:动态申请内存 背景: 在很多时候,会遇到从外部按要求输入字符串的情形,有些是明确了长度,有些只是给定了最大长度,而有些没有规定长度.对 ...

最新文章

  1. BugkuCTF-Misc:眼见非实(ISCCCTF)
  2. centos 6.5 rpm mysql_Linux平台(CentOS 6.5) RPM包方式安装 Mysql 5.7
  3. Android实现ExpandableTextView可扩展TextView
  4. Ubuntu中安装、生成、导入、导出、Python3虚拟环境
  5. 功能测试点有哪些?怎么做好软件功能测试?
  6. 原型 / 构造函数 / 实例/原型链
  7. 浅谈:云桌面在我国高校的应用前景
  8. Oracle分析函数-nulls first/nulls last
  9. Oracle数据库sql 列转字符串行函数WMSYS.WM_CONCAT()
  10. 13.Linux 高性能服务器编程 --- 多进程编程
  11. 181101新闻:午后阳光下集思广益,课例研修尝试与挑战并存
  12. 网络安全技术心得体会
  13. map文件介绍及使用
  14. Payment相关逻辑
  15. 学计算机专业1050显卡够不够,gtx1050显卡性能怎么样
  16. matlab去除摩尔纹,索尼ILCE-7RM2测评——理论画质篇
  17. 《响应式Web设计性能优化》一2.3 Web运行时性能
  18. 【windows 10】 Microsoft Store 安装软件闪退的解决办法
  19. ssssssssss
  20. 苹果Mac Safari下载文件没有反应如何解决?

热门文章

  1. 如何借助 svn update 自动更新线上的web
  2. 代码设置按钮样式的方法
  3. Eclipse常用功能键
  4. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客
  5. 黑马vue---10-11、Vue实现跑马灯效果
  6. 【python技巧】“”、“”等符号操作
  7. 并发编程-单元练习题
  8. 全方位绕过软WAF攻略
  9. Xcode中的Info.plist字段列表详解
  10. 查看windows 端口进程