我是靠谱客的博主 兴奋龙猫,这篇文章主要介绍【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针 排序 | 通过 交换指针方式 进行排序 )一、二维指针 排序 ( 通过 交换指针方式 进行排序 )二、完整代码示例,现在分享给大家,希望可以做个参考。

文章目录

  • 一、二维指针 排序 ( 通过 交换指针方式 进行排序 )
  • 二、完整代码示例





一、二维指针 排序 ( 通过 交换指针方式 进行排序 )



在上一篇博客 【C 语言】二级指针作为输入 ( 二维指针 | 为 二维指针 分配内存 - 存放 一维指针 | 为每个 一维指针 分配内存 | 释放二维指针内存 ) 基础上 , 对 二维指针 指向的 若干 一维指针 指向的数据 进行排序 ;


首先 , 准备好了循环控制变量 , 和 排序 交换 时 , 使用的 中间变量 ;

  • 循环控制变量 : 排序一般需要定义两个变量 ;
复制代码
1
2
3
// 循环控制变量 int i = 0, j = 0;
  • 排序时 , 交换指针 , 该指针是存储 要 交换指针 的临时变量 ;
复制代码
1
2
3
// 排序时 , 交换指针 , 该指针是存储 要 交换指针 的临时变量 char *tmp = NULL;

然后 , 对二维指针指向的数据 , 进行排序 ; 涉及到使用 strcmp 函数 , 参考 【C 语言】二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 ) 一、strcmp 函数 博客章节 , 进行理解 ;

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 对 二维指针 指向的数据进行排序 for(i = 0; i < num; i++) { for(j = i + 1; j < num; j++) { // 交换 i , j 指针 // 从 大 到 小 进行排序 if(strcmp(p[i], p[j]) < 0) { tmp = p[i]; p[i] = p[j]; p[j] = tmp; } } }




二、完整代码示例



完整代码示例 :

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { // 二维指针 指向的 一维指针 个数 int num = 4; // 声明二维指针 char **p = NULL; // 循环控制变量 int i = 0, j = 0; // 排序时 , 交换指针 , 该指针是存储 要 交换指针 的临时变量 char *tmp = NULL; // 在堆内存中 , 分配一块内存空间 // 用于存储 num 个 一维指针 // 每个 一维指针 指向一块内存空间 p = (char **)malloc( sizeof(char*) * num ); // 遍历 二维指针 指向的多个 一维指针 // 并为每个 一维指针 在堆内存中 分配 20 字节内存 for(i = 0; i < num; i++) { // 为每个字符分配 20 字节空间 p[i] = (char *)malloc(sizeof (char) * 20); // 向内存中写入 字符串 , 字符串内容是 i + 1 // 注意是通过通配符拼装的字符串 sprintf(p[i], "%d", i + 1); } // 打印字 二维指针 指向的 num 个 一维数组 指向的 字符串 for(i = 0; i < num; i++) { printf("%sn", p[i]); } // 对 二维指针 指向的数据进行排序 for(i = 0; i < num; i++) { for(j = i + 1; j < num; j++) { // 交换 i , j 指针 // 从 大 到 小 进行排序 if(strcmp(p[i], p[j]) < 0) { tmp = p[i]; p[i] = p[j]; p[j] = tmp; } } } // 打印字 二维指针 指向的 num 个 一维数组 指向的 字符串 printf("nSort : n"); for(i = 0; i < num; i++) { printf("%sn", p[i]); } // 释放内存 // 先释放 num 个 一级指针 for(i = 0; i < num; i++) { if(p[i] != NULL) { free(p[i]); p[i] = NULL; } } // 再释放 二级指针 if(p != NULL) { free(p); } // 命令行不要退出 system("pause"); return 0; }

执行结果 :

在这里插入图片描述

最后

以上就是兴奋龙猫最近收集整理的关于【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针 排序 | 通过 交换指针方式 进行排序 )一、二维指针 排序 ( 通过 交换指针方式 进行排序 )二、完整代码示例的全部内容,更多相关【C内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部