【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
文章目录
- 一、二维数组
- 1、二维数组声明及初始化
- 2、二维数组遍历
- 3、二维数组排序
- 二、完整代码示例
一、二维数组
前几篇博客中 , 介绍的是指针数组 ;
指针数组 的 结构特征 是 , 数组中的每个元素 , 即每个指针变量 可以 指向不同大小的 内存块 ;
二维数组 与 指针数组 的结构不同 , 二维数组 的 内存结构 是整齐的连续的 内存块 , 每个 一维指针 指向的内存块 的大小都是相同的 , 并且这些内存块 还是连续的 ;
1、二维数组声明及初始化
二维数组声明及初始化 :
// I. 二维数组char array[4][10] = {"abc", "123", "258", "sfd"};
2、二维数组遍历
二维数组遍历 :
// II. 打印二维数组中的字符串for(i = 0; i < num; i++){// 使用数组下标形式访问printf("%s\n", array[i]);// 使用指针访问//printf("%s\n", *(array + i));}
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);}}}
二、完整代码示例
完整代码示例 :
#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;
}
执行结果 :
【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )相关推荐
- 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 通过 交换指针指向的内存数据 方式进行排序 )
文章目录 一.二维指针 排序 ( 通过 交换指针指向的内存数据 方式进行排序 ) 二.完整代码示例 一.二维指针 排序 ( 通过 交换指针指向的内存数据 方式进行排序 ) 在上一篇博客 [C 语言]二 ...
- 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针 排序 | 通过 交换指针方式 进行排序 )
文章目录 一.二维指针 排序 ( 通过 交换指针方式 进行排序 ) 二.完整代码示例 一.二维指针 排序 ( 通过 交换指针方式 进行排序 ) 在上一篇博客 [C 语言]二级指针作为输入 ( 二维指针 ...
- 二级指针做输入_第2种内存模型
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <std ...
- 关于C语言二级指针正确使用总结
关于C语言二级指针正确使用总结 什么是二级指针 C语言中的二级指针其实就是指向指针的指针,指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.同理可以构建三级或者N级指针,但是一般情况下用不到 ...
- c语言二级指针实现队列,C语言二级指针底层实现
C语言中,Pointers to Pointers,即二级指针. 一级指针和二级指针的值都是指向一个内存单元: 一级指针指向的内存单元存放的是源变量的值, 二级指针指向的内存单元存放的是一级指针的地址 ...
- C语言二级指针内存模型建立
C语言二级指针内存模型建立 代码 解析 代码 void main() {int i = 0;//指针数组char * p1[] = {"123", "456"
- [C语言]使用指针将输入的多个字符串按大小升序排序
[C语言]使用指针将输入的多个字符串按大小升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按大小升序排序 要求:子函数 void StrSort(char ...
- [C语言]使用指针将输入的多个字符串按长度升序排序
[C语言]使用指针将输入的多个字符串按长度升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按长度升序排序 要求:子函数 void StrSort(char ...
- 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...
- 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )
文章目录 一.二级指针 1.为 二维指针 分配内存 2.为每个 一维指针 分配内存 3.释放 二维指针 内存 二.完整代码示例 一.二级指针 声明二级指针 : // 声明二维指针char **p = ...
最新文章
- java算法 第七届 蓝桥杯B组(题+答案) 3.凑算式
- 配置Groovy开发运行环境
- 了解Master Pages库
- linux内核镜像解压,解压内核镜像
- oracle 察看用户是否被锁,解锁以及改密码
- WinForm C#全局错误捕捉处理【整理】
- 【日常踩坑】Android机微信webview中页面跳转的问题
- linux网线连接树莓派,3、树莓派使用网线连接路由器获取网络的讲解
- js 正则表达式判断价格
- C\C++的转义字符
- C语言中malloc,calloc,realloc,free的语法与作用
- 禅智听书《精进:如何成为一个很厉害的人》
- 项目管理十大知识领域一——项目整体管理
- 直流电动机调速matlab,基于MATLAB龙门刨床直流电动机调速系统仿真研究
- 深圳大学物计算机黄yilin,中国科学引文数据库(CSCD)收录本校教师论文情况.doc...
- 整除分块 B - Make Divisible
- linux docker容器MySQL自动备份发送到邮箱
- 主题和母版页(母版页)
- 计算机科学引论答案6,计算机科学引论前六章答案.doc
- sql 语句in 使用占位符
热门文章
- MongoDB学习笔记~为IMongoRepository接口添加分页取集合的方法
- Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式
- 网管日志-06.07.21
- iview实现国际化
- Vue.js示例:GitHub提交(watch数据,created钩子,filters过滤); 网格组件(功能:1.检索,2排序);...
- js中的apply()、call() 和 bind()
- java追加文本到文件末尾
- view是怎么被展示在手机上的?
- 每日站立会议4-20(张硕)
- [导入]MsAjax Lib- Boolean.parse 函数