C语言——二维数组

C语言二维数组初始化详解 本文介绍了C语言中常用的4种二维数组初始化方式,并依此列出了相应的代码、解释和输出结果。希望本文对于初学C语言或者对于二维数组初始化方式存在疑惑的读者有所帮助。 阅读详情

一、二维数组的概念

 二维数组是一种常见的数据结构,在C语言中用于存储和操作二维数据。它可以看作是由多个一维数组组成的数据结构,每一个一维数组都是二维数组中的一行。

与一维数组不同的是,二维数组需要两个索引来访问数组中的元素。第一个索引代表行号,第二个索引代表列号。例如,对于一个包含3行4列的二维数组,第二个元素的索引是[0][1],最后一个元素的索引是[2][3]。

可以把二维数组想象成一个表格,其中的每一个单元都包含一个特定的数据。在C语言中,可以用二维数组存储各种类型的数据,例如整型、浮点型、字符型。

二、二维数组的声明和初始化

声明

声明二位数组的方法和一维数组的方法相似,在创建二维数组时,要说明数组的数据类型、数组名、数组大小。

举例:创建一个三行四列的二维数组,数据类型为整型。

int arr[3][4]
//int为数组的数据类型
//arr为数组的名称
//[3]表示该数组有三行
//[4]表示该数组每一行有四个元素

初始化

2.1 不完全初始化

//部分初始化
int arr_1[3][5]={0,1};//对数组arr_1的第一个元素和第二个元素赋值
float arr_2[6][6]={6.6,8.8};//对数组arr_2的第一个元素和第二个元素赋值

2.2 完全初始化

int arr_3[2][2]={1,2,3,4};

2.3 按照行进行初始化

int arr_4[3][3]={{1,2,3},{4,5,6},{7,8,9}};

2.4 声明数组时省略行

在对二维数组进行声明时,省略了行号,但不能省略列号,此时一定要给出初始化表达式,编译器可以从初始化结果推断出有多少行。

int arr_5[][3]={{1,2},{3,4},{5,6}};
int arr_6[][5]={1,2,3,4,5,6};

三、二维数组的使用

3.1 数组下标

举例:通过元素下标对数组元素进行访问

int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("%d",arr[2][1]);//打印数组中的第三行第二个元素

3.2 数组元素的输入输出

#include<stdio.h>

int main()
{
	int arr[2][3];
	int i;//代表行号
	int j;//代表列号

	//输入
	//通过循环,遍历数组中的每一个元素,逐一进行赋值
	for (i = 0; i < 2; i++)//遍历行号
	{
		for (j = 0; j < 3; j++)//遍历列号
		{
			scanf("%d", &arr[i][j]);
		}
	}

	//输出
	//通过循环,遍历数组中的每一个元素,逐一对每个元素的数据进行读取
	for (i = 0; i < 2; i++)//遍历行号
	{
		for (j = 0; j < 3; j++)//遍历列号
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}

	return 0;
}

3.3 二维数组在内存中的存储 

#include<stdio.h>

int main()
{
	int arr[2][3] = { {1,2,3},{4,5,6} };
	int i;//代表行号
	int j;//代表列号

	//输出
	//通过循环,遍历数组中的每一个元素,逐一对每个元素的数据进行读取
	for (i = 0; i < 2; i++)//遍历行号
	{
		for (j = 0; j < 3; j++)//遍历列号
		{
			printf("arr[%d][%d]=%d",i,j, &arr[i][j]);//打印出每个元素的存储地址
			printf("\n");
		}
		
	}

	return 0;
}

从以上代码的结果可以看出,二维数组中的元素是连续存贮的。

 

任意行列二维数组C语言实现 在C语言中,数组是一个连续的线性存储结构,数组名称即为数组首元素首地址,中括号被C语言解释为指向运算,通过对指针的加法,实现取得相应元素。对二维数组的使用则相当于定义一个二阶指针,可以看做是一个一维数组里每一个成员是一个一维数组,所以二维数组的名字就是一个指向指针的指针,即二阶指针。通过两次指向运算得到相应的元素。     但是在C语言中,对变量空间的申请必须要写在一个函数的所有有效语句之前,使 阅读详情

相关推荐

PTPX功耗分析实战——从脚本配置到报告解读

本文详细介绍了PTPX功耗分析的全流程,从脚本配置到报告解读,帮助工程师快速掌握芯片设计中的功耗估算技术。文章涵盖了环境搭建、波形文件处理、功耗报告解析等关键环节,并提供了实战经验和优化建议,特别适合需要提升PTPX功耗分析效率的开发者。

weixin_29248313的博客 279

C 语言之二维数组(详细版)

目录 1.二维数组的定义和初始化 2.二维数组在内存中的存储 3.二维数组的使用 4.二维数组的应用实例

weixin_45332776的博客 16万+

YOLOv5+Astra Pro Plus深度相机:手把手教你实现实时目标检测(附ROS配置技巧)

本文详细介绍了如何将YOLOv5目标检测算法与Astra Pro Plus深度相机结合,构建实时目标检测系统。内容涵盖从硬件选型、环境搭建、ROS配置到YOLOv5部署与深度信息融合的完整流程,并分享了性能优化、避障算法等实战技巧,帮助开发者在机器人视觉等场景中快速实现智能感知应用。

weixin_28292761的博客 386

6.C语言 二维数组

1.什么是二维数组? 就是数组中保存的元素都是一维数组,我们就称之为二维数组 2.二维数组的定义格式 元素类型 数组名称[一维数组的组数][一维数组中存储的元素个数] 一维数组的个数:代表二维数组中可以存储元素的个数 3.如何操作二维数组? 数组名称[索引]; 取出二维数组中对应索引的一维数组 数组名称[索引][索引]; 需求:要求定义变量保存用户的年龄 需求:要求定义变量保存一个班级用户的年龄 需求:要求定义变量保存两个班级用户年龄 #include <s.

m0_57908316的博客 4154

十二、基于FPGA实现slave SelectMAP配置逻辑

slave SelectMAP配置

weixin_41838250的博客 8753

如何缩减layout电路面积?减少晶体管的数量——以全加器为例【VLSI】

How to reduce the number of transistors to reduce circuit area? -- Take the Binary Full Adder as an example 优化面积的方法 1. 减少晶体管的数量 2. 改变gate matrix的布局

Jie_MSD的博客 6429

【C语言】二维数组

前面的博客介绍了一维数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。我们在实际问题当中很多量是由二维或者是多维的,因此 C 语言允许构造了多维数组。多维数组的元素有多个下标,以标识它的数组中的位置,所以也称为多下标变量。本片文章介绍的是二维数组。

"謓泽"正在路上朝着"攻城狮"方向"前进四"! 7万+

我的python学习之路

Python 是一门功能强大且易于学习的编程语言,广泛应用于数据分析、人工智能、Web 开发、自动化等领域。以下是一个 Python 学习路径的总结,帮助你系统地掌握 Python 编程。

数据知道的博客 3万+

C:二维数组索引小结

关于二维数组索引的小知识点 学习C语言一直对指针望而却步,尤其是与数组相结合。这里简单讲讲自己对二维数组索引的理解,还请大佬们多多批评指正。 此处设arr为一二维数组,图中三种颜色代表该数组的列,所以可以看出arr数组是“三行四列”,其步长是“int 4”,所以arr+1一次跨越“一行”,此时如果需要索引更具体的元素,则需要对首地址解引用(取值),arr[0],二者虽然数值一样,但意义完全不同,arr[0]+1则会得到第一行第一个元素,以此类推,为获得第二行第二个元素,则首先需要“跨越”至第二行,即arr

Duke1225的博客 3085

【数字IC基础】DFT(Design For Test)可测性设计

【数字IC基础】DFT(Design For Test)可测性设计

努力,加油每一天鸭~ 3464

基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)

一、环境介绍 小车主控MCU: STM32F103ZET6 STM32程序开发IDE: keil5 STM32程序风格: 采用寄存器方式开发,注释齐全,执行效率高,方便移植 手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解) 硬件包含: 淘宝购买的完整一套4轮遥控小车(采用STM32F103ZET6作为主控板)、DHT11温湿度传感器、中科微GPS模块、ESP8266 ...

6万+

C语言第九弹---二维数组

1、二维数组的创建1.1、二维数组的概念​1.2、⼆维数组的创建2、二维数组的初始化2.1、不完全初始化​2.2、完全初始化​2.3、按照行初始化​2.4、初始化时省略行,但是不能省略列​3、⼆维数组的使用3.1、⼆维数组的下标3.2、⼆维数组的输入和输出4、⼆维数组在内存中的存储5、C99中的变长数组​6、数组练习总结

小林熬夜学习编程的博客 3343

大模型角色提示词写得再严密,也能被绕过?我用攻击者思维把自己吓了一跳!

很多人以为提示词是“只要写清楚了,模型就能理解”,但实际上——模型并不具备严格的规则意识,它只是在预测下一句话。所以我们必须从“攻防”角度出发,设计更强的防护机制。我这次就是亲身踩坑,用红队思维模拟攻击,才意识到原来提示词注入这么容易中招。你如果也在做 AI 应用、角色系统、提示词驱动的功能,建议你也用类似方式测试一下,不然被绕了都不知道。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1026

C语言数组——二维数组

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

专注于C语言编程干货分享 6万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C语言二维数组指针(指向二维数组的指针)详解

声明!本文转载仅为方便学习使用! 如有需要,请访问C语言二维数组指针(指向二维数组的指针)详解 二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 0 1 2 3 4 5 6 7 8 9 10 11 但在内存中,a 的分布是一维线性的,整

weixin_43323830的博客 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言二维数组及指针引用

文章目录C语言二维数组及指针引用1.二维数组的定义与表示2.用指针引用二维数组元素 C语言二维数组及指针引用 1.二维数组的定义与表示 二维数组是形如: 表示一个int类型,三行四列的数组 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} 表示一个char类型,两行三列的数组 char s[2][3]={{'a','b','c'},{'d','e','f'}} 二维数组a的存储形式如下表所示: 行/列行/列行/列 a[i][0] a[i][1] a[i][2] a

weixin_45863060的博客 9008

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C语言二维数组

C语言二维数组1二维数组的定义和使用1二维数组的定义2.二维数组的应用3.二维数组的初始化 1二维数组的定义和使用 1二维数组的定义 二维数组的声明与一维数组相同,一般形式如下: 数据类型 数据名[常量表达式1][常量表达式2] 其中,“常量表达式1”被称为行下标,“常量表达式2”被称为列下标。如果有二维数组a[m][n] ,则二维数组的下标取值范围如下: *列下标的取值范围0~n-1 *行下标的...

Lexi_Alexander的博客 3141

【C语言】二维数组与指针

  我们都知道一维数组,但是关于二维数组,我们容易搞蒙。有一个特殊的说法:二维数组就是父子数组,为了研究清楚地址的概念,我们把二维数组回归到一维数组去讲解。看这段代码:   通过对指针和数组的学习,我们明白了数组名就是地址,所以我们可以把二维数组 a[3][4]a[3][4]a[3][4] 中的 a[3]a[3]a[3] 看作是父数组,那么它的地址就是数组名 aaa ,也叫行地址,父数组中包含三个元素:a[0]a[0]a[0]、a[1]a[1]a[1]、a[2]a[2]a[2] 。再看上面一幅图片,在每个父

qq_62361050的博客 6527

C语言函数传递二维数组

C语言如果给函数传递二维数组作为参数 问题的产生 先看一个传递二维数组的例子: #include <stdio.h> void foo(int a[][], int m, int n) { int i = 1; int j = 1; printf("a[%d][%d]=%d\n", i, j, a[i][j]); } int main() { int...

SanShuiGeGe的博客 6551

c语言二维数组作用,C语言二维数组

上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组。在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。二维数组的定义二维数组定义的一般形式是:dataType arrayName[length1][length2];其中,dataType 为数据类型,arrayNa...

weixin_36084130的博客 1829

C 语言定义动态二维数组

C语言定义动态二维数组1 为不能直接定义int [n][n]2 动态定义二维数组的方法 1 为不能直接定义int [n][n] C语言里,所有变量空间都是在程序运行之初向系zd统申请的, 包括指针,除了一些动态申请方式如malloc函数。 没有申请的空间系统是不允许读写的。 那么如果一个数组大小是变量定义, 则在程序运行前不能确定数组大小, 也就无法申请,故不允许。 所以,解决的办法便是通过mal...

偶尔想看云飞的博客 8279

C语言求二维数组鞍点

C语言求二维数组鞍点 题目出自谭浩强C程序设计第四版 6.8 鞍点,即该位置上的元素在该行上最大,在该列上最小。 一个二维数组有可能有多个鞍点,当然也可能没有鞍点。 此代码仅考虑鞍点存在的情况 解题思路:先找出一行中值最大的元素,再检查它是否为该列的最小值 #include<stdio.h> #define N 4 #define M 5 int main() { i...

m0_46725321的博客 1万+

C语言指针与二维数组

二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 0 1 2 3 4 5 6 7 8 9 10 11 但在内存中,a 的分布是一...

qq_38325803的博客 4483
上一篇: C语言——一维数组
下一篇: 扫雷游戏(C语言)
Jett_Lin
博客等级 码龄5年 305粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值