【C 语言】二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 )
文章目录
- 一、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 函数 )相关推荐
- 【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )
文章目录 总结 一.直接定义 数组指针 二.完整代码示例 总结 int (*p)[3] = NULL; 一.直接定义 数组指针 直接定义 数组指针 , 首先 , 定义一个普通数组 , 之后的 数组指针 ...
- Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
指针: 指针是一个特殊的变量,因为存储的数据不仅仅是一个普通的数据,而是一个变量的内存地址,指针本身也是有内存地址的 指针的数据类型有int.float.bool.string.数组.结构体 指针的作 ...
- C++之指针探究(五):数组指针和二维数组
前文:C++之指针探究(四):指针和二维数组 回顾:初始化二维数组时可以"偷懒":int array[2][3]={{0,1,2},{3,4,5}}; 可以写成:int array ...
- 字符串排序(函数,指针)(C语言实现)
编写程序,用户输入n个(n<100)字符串(每个字符串长度小于100),按照字典顺序将字符串进行排序,并输出.要求在排序中使用指针数组完成. [输入说明] 输入第一行是一个整数数字,表示n,接下 ...
- 什么是指针?什么是数组指针?什么是指针数组?
今天来探讨一下关于指针的一些知识 1.指针 #include <stdio.h>#if 0 1.指针变量的定义数据类型* 变量名;注意事项: 1.在定义指定变量时,*起到标志性的作用, 除 ...
- php数组指针什么用,php数组指针用法详解
先给出一条结论,然后我们在用代码来证明这个结论吧,$arrtmp=$arr;在这个赋值表达式中我把$arr叫做赋值数组,把$arrtmp叫做被赋值数组,数组在赋值时,如果赋值数组的数组指针已经指向了数 ...
- 数组指针 sizeof 实现_C++数组指针!
学习C++数组的时候,对数组的了解不是很深.也不知道,为什么声明一个数组,int a[10],为什么a就是数组的地址. 你可以这样理解,将a理解为指向数组头的一个指针,这样就好理解了.理解了之后确实好 ...
- 我两小时学完指针,你学会数组/指针与函数需要多久?
数组与函数: 这段函数中 函数的参数是数组,注意数组作为函数参数时,数组名和数组元素个数时分别传递的. 指针与函数: 这段函数中的参数是指针变量,传入的是数组的数组名或者首元素的地址,然后用引领操作符 ...
- C语言:从键盘输入一个长度不定的字符串[C_004]
目录 背景: Solution: 方案一:那就不要字符串 方案二:动态申请内存 背景: 在很多时候,会遇到从外部按要求输入字符串的情形,有些是明确了长度,有些只是给定了最大长度,而有些没有规定长度.对 ...
最新文章
- BugkuCTF-Misc:眼见非实(ISCCCTF)
- centos 6.5 rpm mysql_Linux平台(CentOS 6.5) RPM包方式安装 Mysql 5.7
- Android实现ExpandableTextView可扩展TextView
- Ubuntu中安装、生成、导入、导出、Python3虚拟环境
- 功能测试点有哪些?怎么做好软件功能测试?
- 原型 / 构造函数 / 实例/原型链
- 浅谈:云桌面在我国高校的应用前景
- Oracle分析函数-nulls first/nulls last
- Oracle数据库sql 列转字符串行函数WMSYS.WM_CONCAT()
- 13.Linux 高性能服务器编程 --- 多进程编程
- 181101新闻:午后阳光下集思广益,课例研修尝试与挑战并存
- 网络安全技术心得体会
- map文件介绍及使用
- Payment相关逻辑
- 学计算机专业1050显卡够不够,gtx1050显卡性能怎么样
- matlab去除摩尔纹,索尼ILCE-7RM2测评——理论画质篇
- 《响应式Web设计性能优化》一2.3 Web运行时性能
- 【windows 10】 Microsoft Store 安装软件闪退的解决办法
- ssssssssss
- 苹果Mac Safari下载文件没有反应如何解决?