什么是二维数组

当刚看见二维数组时肯定会对二维数组有一些疑惑二维数组是什么?

 int arr[4] = { 1,2,3,4 };//这个便是一维数组

以 int 类型为例子当 int 类型的元素集合在一起便形成了一维数组(如图示)。

二维数组是 一维数组 集合在一起形成二维数组 

 int arr[4][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7} };//这个是二维数组

二维数组类似于表格的样子如上图,其中各个元素按照表格排列

二维数组的元素个数可以想象为n行n列,以上面arr[4][4]为例元素个数为4*4为16个。

二维数组的下标如同一维数组一样都是0开始的,构成数组arr的元素有

arr[0][0], arr[0][1], arr[0][2], arr[0][3]
    arr[1][0], arr[1][1], arr[1][2], arr[1][3]
    ......
    arr[3][0], arr[3][1],...............arr[3][3]

以上为介绍什么是二维数组。

二维数组的使用

输入三个同学的三次成绩分别计算出他们各自的总成绩

arr[0][j]是储存第一个同学的成绩

count[]是储存每个同学的总成绩

#include <stdio.h>
int main()
{int arr[3][3] = { 0 };int count[3] = {0};puts("输入三个同学,三门考试的考试成绩\n");for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){printf("%d位同学的第%d个成绩\n", i + 1, j + 1);scanf("%d", &arr[i][j]);}puts("\n");}for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){count[i] += arr[i][j];}}for (int i = 0; i < 3; i++){printf("%d位同学总成绩是%d\n", i + 1,count[i]);puts("\n");}
}

二维数组传参

二维数组传参首先要注意的是传参不能取数组名的地址

//以arr[3][3]为例

//二维数组传参因为数组名即为数组首元素地址所以可以直接使用数组名,其次要注意因为

//是二维数组所以需要传有几个元素为了说明到底有多少行和列

//主函数部分传参

function(arr,3,3);

//函数部分接收二维数组如果不需要返回值则

void function(int arr[3][3],int x,int y)

//记得一定要创建arr[ ][3]这样是为了说明这个数组是一个二维数组同时也不会引起报错

//函数声明时要注意arr[3][3]可以写为arr[ ][3]但是不可以写成arr[ ][ ]

//注意!!!

//二维数组传参给函数在函数内执行的过程中可能对数组内容进行修改

//如果不想修改函数内的内容

//二维数组传参使用过程中如果不想对数组内容进行修改可以加const

//

举个栗子

#include <stdio.h>
void add(int arr[4][4], int a, int b)
{//自增过程for (int i = 0; i < 4; i++){for (int j = 0; j < 4; j++){arr[i][j] += 1;//也可以//*(arr[i]+j)+=1;}}
}
int main()
{int arr[][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7} };//add函数的作用为将arr这个二维数组里面的所有元素都自增 1add(arr,4,4);//打印for (int i = 0; i < 4; i++){for (int j = 0; j < 4; j++){printf("%d  ", arr[i][j]);}puts("\n");}return 0;
}

什么是二维数组以及二维数组传参相关推荐

  1. 数组作为函数的参数传参时,数组名会退化为指针

    1.数组作为函数的参数传参时,数组名会退化为指针 数组作为函数的参数传参时,数组名会退化为指针,数值传参时,需要把数值的长度一起传过去,另外,sizeof()运算符包含字符串的哨兵'/0',而strl ...

  2. 将数组转化成字符串进行传参

    将一个数组通过字符串,进行传参 原数组 fjData:[{...},{...}] 先定义一个空的json字符串 let fj = JSON.parse(JSON.stringify({})) 将数组赋 ...

  3. 【C语言进阶】数组、指针、函数——传参篇

    目录 写在前面 一.数组传参 一维数组传参 二维数组传参 二.指针参数 一级指针传参 二级指针传参 三.函数传参 四.看懂代码 写在最后 写在前面 上篇文章介绍了指针数组和数组指针,有兴趣的小伙伴可以 ...

  4. C语言数组在函数中的传参

    在c语言中有时需要数组作为函数的参数进行传参,那么应该怎样传递呢? 先看一下整数作为函数参数时的传参 #include <stdio.h> #include <stdlib.h> ...

  5. 数组传参中形参的秘密,以及数组名当作函数实际参数的特点,以及二维数组,以及外部变量和全局变量

    1.数组传参中形参的秘密 第三行:形参中不存在数组的概念,即便是中括号约定了数组的大小,也无效. 第二十行:传递的是一个地址,是数组的首地址. 数组名代表了整个数组的首地址. 第二十一行:第一个元素的 ...

  6. [C] 数组指针、指针数组及数组传参

    指针 字符指针 数组指针 指针数组 一维数组传参 1. 整型数组 2. 指针数组 二维数组传参 一级指针传参 二级指针传参 小引 在指针的学习阶段,有不少同学都十分畏惧这个物什,甚至"谈指针 ...

  7. Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度

    1. 创建一个 [3,5] 所有元素为 True 的数组 In [162]: b = np.ones((3,5), dtype=bool)In [163]: b Out[163]: array([[ ...

  8. java 稀疏数组和二维数组转换,并保存稀疏数组到文件后可以读取

    稀疏数组和二维数组转换 稀疏数组:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理方法: 记录数组一共有多少行,有多少个不同的值 把具有不同值得元素的行 ...

  9. 求二维数组中最大子数组的和

    任国庆  张博 之前我们讨论了在一维数组中求最大子数组的和,在此基础上我们开始讨论二维数组的最大子数组. 求二维数组的最大子数组思想是建立在以为数组.首先将数组的第一列看成一个一维数组,找到该列的最大 ...

  10. 结对开发--求二维数组的最大子数组

    小组成员:信1201-1班  黄亚萍 信1201-1班  袁亚姣 一.题目要求 程序要使用的数组放在一个叫 input.txt 的文件中,  文件格式是: 数组的行数, 数组的列数, 每一行的元素,  ...

最新文章

  1. Python按行读取文件、写文件
  2. C++五子棋(七)——main函数以及项目总结
  3. 这是阿里技术专家对 SRE 和稳定性保障的理解
  4. 洛谷 P1463 [POI2002][HAOI2007]反素数
  5. Linux CentOS6.7设置为固定静态IP的方法
  6. android jdbc 连接mysql数据库,android怎么用JDBC方法连接mysql数据库
  7. 零基础能不能学习web前端开发?
  8. Mac上好用的web前端开发工具
  9. javaScript之原生js封装组件(弹窗为例)
  10. 5分钟三句代码实现抖音自动下载
  11. 爱河许云上计算机乐谱,爱河简谱(歌词)-神马乐团演唱-桃李醉春风记谱
  12. Python下载qq音乐歌曲实例教程
  13. 排序算法总结(Python实现)——(一)
  14. 微信和QQ内置浏览器停止访问该网页,微信域名被屏蔽的解决方案
  15. 数据分析中的数据处理以及特征分析
  16. HTML5面试题及答案
  17. 嵌入式linux音频播放器设计,基于嵌入式Linux下Madplay音频播放器设计论文.docx
  18. 2.4G和5.8G的无线区别
  19. socket---TCP通信
  20. “四书五经”经典语句

热门文章

  1. python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员
  2. 数据可视化--实验五:高维非空间数据可视化
  3. 如何压缩图片大小到200k以下?照片太大怎么压缩到200k?
  4. java导出excel 提示文件格式或文件扩展名有误
  5. 惠普linux进入bios设置u盘启动,如何进入bios设置,手把手教你惠普如何进入bios设置u盘启动...
  6. 最新php版本下载地址
  7. 动画模拟实现电梯的载客运行过程
  8. 操作系统中 完成时间,周转时间,带权周转时间和到达时间,服务时间是什么关系,怎么算
  9. 解决“C2001:常量中有换行符“编译问题
  10. win11 22H2 连接共享打印机失败