C语言目录

C/C++学习资源(百度云盘链接)
计算机二级资料(过级专用)
C语言学习路线(从入门到实战)
编写C语言程序的7个步骤和编程机制
C语言基础-第一个C程序
C语言基础-简单程序分析
VS2019编写简单的C程序示例
简单示例,VS2019调试C语言程序
C语言基础-基本算法
C语言基础-数据类型
C语言中的输入输出函数
C语言流程控制语句
C语言数组——一维数组

二维数组

前面介绍了一维数组,接下来介绍如何定义和使用二维数组。

二维数组定义的一般形式如下:

类型说明符 数组名[常量表达式1][常量表达式2]

与一维数组的定义唯一的不同是多了一个常量表达式2,其中,常量表达式1为第一维的长度,常量表达式2为第二维的长度。通常在处理二维数组的时候,为了便于理解,都将数组视为一个矩阵,常量表达式1表示矩阵的行数,而常量表达式2表示矩阵的列数。与一维数组一样,在定义二维数组时,常量表达式同样不能为变量。下面先通过一段代码来看二维数组的定义。

#include<stdio.h>#define M 4
#define N 3int main() {int arr[M][N];for (int i = 0; i < M; i++){for (int j = 0; j < N; j++){printf("&arr[%d][%d]=%d\t", i, j, &arr[i][j]);}printf("\n");}return 0;
}

运行结果:

将二维数组arr视为一个矩阵,下图显示了数组中每个元素在矩阵中的存放位置。

数组中各个元素在矩阵中对应的位置由二维数组的两个下标决定。我们可以将定义的二维数组int arr[4][3]视为由arr[4]和int [3] 两部分构成,将arr[4]视为一个整型一维数组,其中含有4个元素arr[0]、arr[1]、arr[2]、arr[3],每个元素都是int[3]类型的,也就是说,每个元素又是一个一维数组,每个一维数组含有3个元素,如arr[0]含有arr[0][1]、arr[0][1]、arr[0][2]三个元素。

知道了二维数组的这种特殊结构之后,接下来通过下图来了解二维数组在内存中的存储结构。

通过上述二维数组在内存中的存储结构图可以发现,二维数组中的所有元素都存储在一片连续的内存单元中,所占用的内存大小为元素类型所占用的内存大小乘以第一维及第二维的长度。如果以矩阵的方式来分析二维数组的存储方式,那么先从矩阵第一行从左往右依次存储完所有元素,然后按照同样的方法存储第二行的所有元素,直到存储完所有数组元素为止。

接下来再看一个二维数组的示例:

任意输入一个3行3列的二维数组,求对角元素之和

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>int main() {int arr[3][3];int i, j, sum = 0;printf("please input:\n");for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){scanf("%d", &arr[i][j]);}}for (i = 0; i < 3; i++){for ( j = 0; j < 3; j++){if (i==j){sum += arr[i][j];}}}printf("the result is: %d\n", sum);return 0;
}

运行结果如下:

关于以为数组就介绍到这,后面继续更新。。。

如果您觉得本篇文章对您有帮助,请转发给更多的人
C语言中文社区】是一个C语言视频教程、学习笔记、电子书、计算机二级资料等专注于C语言编程学习者的干货知识分享平台,精选深度文章,分享优秀干货类、技能类的学习资源,帮助学习中的你。

C语言数组——二维数组相关推荐

  1. go语言定义二维数组

    使用go语言二维数组 go语言不用管理内存,很多地方使用起来确实很方便,但是在算法方面确实没有C++优秀,特别是缺少像STL一样优秀模板,定义一个二维数组需要进行如下复杂的操作: go语言的二维数组定 ...

  2. c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例

    在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...

  3. java二维数组水平翻转,C 语言 利用二维数组实现对输入的数组进行翻转

    C 语言 利用二维数组实现对输入的数组进行翻转(帮助理解对图像翻转编辑原理) /* ?输入几行几列数字和翻转方式,如: 3 4 0即代表3行4列,左右翻转: 6 5 1即代表6行5列,上下翻转. 输入 ...

  4. 【C语言】二维数组定义以及引用

    接着上面一期进行,二维数组的一些了解,代码均来自于VS编译环境下. 一.怎样定义二维数组 二维数组和一维数组一样,二维数组的定义方式如下:   类型说明符 数组名[常量表达式][常量表达式] 注意一个 ...

  5. C语言汇总学生成绩,c语言用二维数组统计学生成绩.doc

    c语言用二维数组统计学生成绩 # include /*定义一个求每门课平均成绩的函数AverageCourse 它的形参一个是二维数组,用来传递学生成绩: 一个是指针变量(数组名),存放每门课的平均成 ...

  6. C语言的二维数组初始化的几种方式介绍(私藏大数组初始化方式)

    C语言的二维数组初始化的几种方式介绍 1.直接赋值 2.循环对每个元素赋值 3.借用memset/memset_s初始化为0或-1 4.`数组所有元素初始化为相同值(用于大数组初始化贼方便)` 1.直 ...

  7. C语言求二维数组鞍点

    C语言求二维数组鞍点 题目出自谭浩强C程序设计第四版 6.8 鞍点,即该位置上的元素在该行上最大,在该列上最小. 一个二维数组有可能有多个鞍点,当然也可能没有鞍点. 此代码仅考虑鞍点存在的情况 解题思 ...

  8. C语言删除二维数组的重复数据的一个方法

    C语言删除二维数组的重复数据的一个方法 //以下头文件,未及清理 #include "stdafx.h" #include <vector> #include < ...

  9. C语言求二维数组平均数,一道JavaScript的二维数组求平均数的题

    JavaScript中只支持一维数组,但是可以在数组中嵌套数组来创建二维以至于多维的数组.今天下午在看书时候,发现一道感觉比较有意思的题,就是js中如何求二维数组的列之和和行之和,现在就给大家分享下, ...

  10. 062是c语言常量吗,C语言ch062二维数组.pptx

    <C语言ch062二维数组.pptx>由会员分享,可在线阅读,更多相关<C语言ch062二维数组.pptx(33页珍藏版)>请在人人文库网上搜索. 1.2020/11/11,1 ...

最新文章

  1. C# 类型运算符重载在类继承中的调用测试
  2. 良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具
  3. 【计算机视觉】【车辆识别】--Matlab实现
  4. 软考信息系统项目管理师_信息化与信息系统4_软件工程_新一代信息技术---软考高级之信息系统项目管理师006
  5. python开发Day10(多进程多线程补充)
  6. 十四首中国现代诗巅峰之作
  7. 【Unity】Unity3D RPG游戏制作实例(一)游戏简介及文档目录整理
  8. iphone相册照片路径_如何使用相册整理iPhone照片
  9. 在线生成二维码(微信)很好用
  10. 项目管理办公室(PMO)和项目经理(PM)的区别
  11. 前端js以application/octet-stream方式上传文件
  12. Node.js中LTS和Current的两种版本有啥区别?
  13. 关于C#对AutoCad2007二次开发插件工作总结
  14. 杭电oj —— 2037(贪心算法)
  15. Java IO流 详解(字节流、字符流、输入流、输出流、刷新)
  16. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))
  17. php报错: file_put_contents(): failed to open stream 的解决方法
  18. 自由软件基金会正在衰亡,亟待革新!
  19. 往事如烟-给父亲母亲网购的回忆
  20. [ WFU 4th 校赛]无上至尊的提案

热门文章

  1. cascade的含义
  2. undertow 支持 https
  3. java文档注释的模板设置
  4. 计算机管理学生信息的好处,计算机信息技术在学生管理中的应用
  5. 嵌入式系统中软件与硬件的集成测试工具
  6. JeetSite学习资源
  7. 培训师升华:万物皆着我之色彩
  8. 快速查询中通快递物流信息,筛选出更新量为1的单号标色
  9. 关于办理2007年度非北京生源应届毕业生报到落户的通知
  10. Unraid以Docker方式安装配置qbittorrent的注意事项