什么是二维数组
当刚看见二维数组时肯定会对二维数组有一些疑惑二维数组是什么?
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这个二维数组里面的所有元素都自增 1
add(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;
}