四、C语言中的数组:二维数组

四、C语言中的数组:二维数组

本章的学习内容如下:
四、C语言中的数组:数组的创建与初始化
四、C语言中的数组:数组的输入与元素个数
C语言---第6次作业---十道代码题掌握一维数组
四、C语言中的数组:二维数组

我们可以利用矩阵的知识来理解,将一个数组等同于一个向量,例如定义三个向量为arr1={1,2,3},arr2={4,5,6},arr3={7,8,9}, 将一维向量组合成一个矩阵A即为二维向量,再将不同的二维向量组合在一起,即为多维向量。我们可以将其分别理解为一维数组,二维数组,多维数组。
A = { 1 2 3 4 5 6 7 8 9 } A=\left\{ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right\} A=⎩ ⎨ ⎧147258369⎭ ⎬ ⎫

1.二维数组的定义

cpp 复制代码
#include<stdio.h>
int main()
{
	int arr[3][4];//定义了一个3行4列的整型数组
	//基本形式为 数组类型 数组名字[行数][每行元素个数即列数]
	return 0;
}

2.二维数组的初始化

2.1 完全初始化与不完全初始化

二维数组的初始化也分为不完全初始化,和完全初始化,不完全初始化就是提供了不完全的二维数组的元素,全部初始化为0 ,或者部分初始化,剩下元素为0。完全初始化则是提供了此二维数组所有的元素。

cpp 复制代码
#include<stdio.h>
int main()
{
	int arr[3][4] = {0};//不完全初始化
	int arr[3][4] = {1,2};//不完全初始化
	int arr[3][4] = {1,2,3,4,5,6,7,8,9,1,2,3};//完全初始化
	return 0;
}
cpp 复制代码
int arr[3][4] = {1,2,3,4,5,6,7,8,9,1,2,3}//完全初始化且里面没有大括号时,真实的二维数组的排列是一行一行来的

a r r = { 1 2 3 4 5 6 7 8 9 1 2 3 } arr=\left\{ \begin{matrix} 1 & 2 & 3&4 \\ 5 &6& 7&8 \\ 9& 1& 2&3 \end{matrix} \right\} arr=⎩ ⎨ ⎧159261372483⎭ ⎬ ⎫

2.2按照行初始化

例如 int arr[3][4]={``{1},{1},{1}},行数一定要完整。即

a r r = { 1 0 1 0 1 0 } arr=\left\{ \begin{matrix} 1 & 0 \\ 1 & 0 \\ 1 & 0 \end{matrix} \right\} arr=⎩ ⎨ ⎧111000⎭ ⎬ ⎫

2.2初始化时能省略行角标但是不能省略列角标

cpp 复制代码
int arr1[][4] = {1,2}
int arr2[][5] = {1,2,3,4,5,6,7,8,9}

a r r 1 = { 1 2 0 0 0 0 0 0 . . . . . . . . . . . . } arr1=\left\{ \begin{matrix} 1 & 2 & 0&0 \\ 0 &0& 0&0 \\ ...& ...& ...&... \end{matrix} \right\} arr1=⎩ ⎨ ⎧10...20...00...00...⎭ ⎬ ⎫
a r r 2 = { 1 2 3 4 5 6 7 8 9 0 . . . . . . . . . . . . . . . } arr2=\left\{ \begin{matrix} 1 & 2 & 3&4& 5\\ 6&7&8&9& 0\\ ...& ...& ...&...&... \end{matrix} \right\} arr2=⎩ ⎨ ⎧16...27...38...49...50...⎭ ⎬ ⎫

3.二维数组下标的使用

在之前的一维数组的学习中我们了解到了数组的下标是从0开始的二维数组也一样,只不过行和列都是从0开始。

int arr34 = {1,2,3,4,5,6,7,8,9,1,2,3},数组的存储如下表所示:

0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 1 2 3

定位数组中的元素:使用下标,比如arr00=1,arr12=7等等。

cpp 复制代码
#include <stdio.h>
int main()
{
	int arr[3][4] = { 1,2,3,4,5,6,7,8,9,1,2,3 };
	printf("%d\n", arr[1][2]);
	return 0;
}
相关推荐
峥嵘life2 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
数模竞赛Paid answer3 小时前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆3 小时前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
mqiqe4 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
想吃火锅10054 小时前
【leetcode】200. 岛屿数量
算法·leetcode·职场和发展
gugucoding5 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
Nil2085 小时前
leetcode 54螺旋矩阵
算法·leetcode·矩阵
Nebula_g5 小时前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
for_ever_love__5 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
依然鸣6 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论