【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
【摘要】
文章目录
一、二维数组1、二维数组声明及初始化2、二维数组遍历3、二维数组排序
二、完整代码示例
一、二维数组
前几篇博客中 , 介绍的是指针数组 ;
指针数...
一、二维数组
前几篇博客中 , 介绍的是指针数组 ;
指针数组 的 结构特征 是 , 数组中的每个元素 , 即每个指针变量 可以 指向不同大小的 内存块 ;
二维数组 与 指针数组 的结构不同 , 二维数组 的 内存结构 是整齐的连续的 内存块 , 每个 一维指针 指向的内存块 的大小都是相同的 , 并且这些内存块 还是连续的 ;
1、二维数组声明及初始化
二维数组声明及初始化 :
// I. 二维数组
char array[4][10] = {"abc", "123", "258", "sfd"};
- 1
- 2
2、二维数组遍历
二维数组遍历 :
// II. 打印二维数组中的字符串
for(i = 0; i < num; i++)
{
// 使用数组下标形式访问
printf("%s\n", array[i]);
// 使用指针访问
//printf("%s\n", *(array + i));
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3、二维数组排序
二维数组排序 : 对二维数组进行排序 , 不能单纯的交换指针指向 , 二维数组是一块整体连续的内存 , 必须对内存中存储的实际数据进行整体位置交换 ;
// III. 二维数组排序
// 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比
for(i = 0; i < num; i++)
{
for(j = i + 1; j < num; j++)
{
// 核心逻辑 : 如果 array[i] 大于 array[j]
// 就交换两个元素
if(strcmp(array[i], array[j]) > 0)
{
// 交换 i, j 位置的指针指向的内存数据
strcpy(tmp, array[i]);
strcpy(array[i], array[j]);
strcpy(array[j], tmp);
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
二、完整代码示例
完整代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
// 循环控制变量
int i = 0, j = 0;
// 二维数组中的一维数组个数
int num = 4;
// 排序时 , 交换指针变量时的临时变量 , 存储指针指向的内存所存储的数据
char tmp[10];
// I. 二维数组
char array[4][10] = {"abc", "123", "258", "sfd"};
// II. 打印二维数组中的字符串
for(i = 0; i < num; i++)
{
// 使用数组下标形式访问
printf("%s\n", array[i]);
// 使用指针访问
//printf("%s\n", *(array + i));
}
// III. 二维数组排序
// 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比
for(i = 0; i < num; i++)
{
for(j = i + 1; j < num; j++)
{
// 核心逻辑 : 如果 array[i] 大于 array[j]
// 就交换两个元素
if(strcmp(array[i], array[j]) > 0)
{
// 交换 i, j 位置的指针指向的内存数据
strcpy(tmp, array[i]);
strcpy(array[i], array[j]);
strcpy(array[j], tmp);
}
}
}
// IV. 打印二维数组中的字符串
printf("\nSort:\n");
for(i = 0; i < num; i++)
{
// 使用数组下标形式访问
printf("%s\n", array[i]);
// 使用指针访问
//printf("%s\n", *(array + i));
}
// 命令行不要退出
system("pause");
return 0;
}
- 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
执行结果 :
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/121555777
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)