文章目录

  • 一、二维数组
    • 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 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )相关推荐

  1. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 通过 交换指针指向的内存数据 方式进行排序 )

    文章目录 一.二维指针 排序 ( 通过 交换指针指向的内存数据 方式进行排序 ) 二.完整代码示例 一.二维指针 排序 ( 通过 交换指针指向的内存数据 方式进行排序 ) 在上一篇博客 [C 语言]二 ...

  2. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针 排序 | 通过 交换指针方式 进行排序 )

    文章目录 一.二维指针 排序 ( 通过 交换指针方式 进行排序 ) 二.完整代码示例 一.二维指针 排序 ( 通过 交换指针方式 进行排序 ) 在上一篇博客 [C 语言]二级指针作为输入 ( 二维指针 ...

  3. 二级指针做输入_第2种内存模型

    #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <std ...

  4. 关于C语言二级指针正确使用总结

    关于C语言二级指针正确使用总结 什么是二级指针 C语言中的二级指针其实就是指向指针的指针,指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.同理可以构建三级或者N级指针,但是一般情况下用不到 ...

  5. c语言二级指针实现队列,C语言二级指针底层实现

    C语言中,Pointers to Pointers,即二级指针. 一级指针和二级指针的值都是指向一个内存单元: 一级指针指向的内存单元存放的是源变量的值, 二级指针指向的内存单元存放的是一级指针的地址 ...

  6. C语言二级指针内存模型建立

    C语言二级指针内存模型建立 代码 解析 代码 void main() {int i = 0;//指针数组char * p1[] = {"123", "456"

  7. [C语言]使用指针将输入的多个字符串按大小升序排序

    [C语言]使用指针将输入的多个字符串按大小升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按大小升序排序 要求:子函数 void StrSort(char ...

  8. [C语言]使用指针将输入的多个字符串按长度升序排序

    [C语言]使用指针将输入的多个字符串按长度升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按长度升序排序 要求:子函数 void StrSort(char ...

  9. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

    文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...

  10. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )

    文章目录 一.二级指针 1.为 二维指针 分配内存 2.为每个 一维指针 分配内存 3.释放 二维指针 内存 二.完整代码示例 一.二级指针 声明二级指针 : // 声明二维指针char **p = ...

最新文章

  1. java算法 第七届 蓝桥杯B组(题+答案) 3.凑算式
  2. 配置Groovy开发运行环境
  3. 了解Master Pages库
  4. linux内核镜像解压,解压内核镜像
  5. oracle 察看用户是否被锁,解锁以及改密码
  6. WinForm C#全局错误捕捉处理【整理】
  7. 【日常踩坑】Android机微信webview中页面跳转的问题
  8. linux网线连接树莓派,3、树莓派使用网线连接路由器获取网络的讲解
  9. js 正则表达式判断价格
  10. C\C++的转义字符
  11. C语言中malloc,calloc,realloc,free的语法与作用
  12. 禅智听书《精进:如何成为一个很厉害的人》
  13. 项目管理十大知识领域一——项目整体管理
  14. 直流电动机调速matlab,基于MATLAB龙门刨床直流电动机调速系统仿真研究
  15. 深圳大学物计算机黄yilin,中国科学引文数据库(CSCD)收录本校教师论文情况.doc...
  16. 整除分块 B - Make Divisible
  17. linux docker容器MySQL自动备份发送到邮箱
  18. 主题和母版页(母版页)
  19. 计算机科学引论答案6,计算机科学引论前六章答案.doc
  20. sql 语句in 使用占位符

热门文章

  1. MongoDB学习笔记~为IMongoRepository接口添加分页取集合的方法
  2. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式
  3. 网管日志-06.07.21
  4. iview实现国际化
  5. Vue.js示例:GitHub提交(watch数据,created钩子,filters过滤); 网格组件(功能:1.检索,2排序);...
  6. js中的apply()、call() 和 bind()
  7. java追加文本到文件末尾
  8. view是怎么被展示在手机上的?
  9. 每日站立会议4-20(张硕)
  10. [导入]MsAjax Lib- Boolean.parse 函数