数组的学习

1.一维数组

在C语言中,数组的声明格式为:类型名 数组名[数组长度];例如:int numbers[5]; 表示声明了一个包含5个整数的数组。

数组的元素可以通过索引来访问,索引从0开始计数。例如,要访问数组numbers中的第一个元素,可以使用numbers[0]。

一维数组的初始化主要需要注意字符数组的初始化,如下:

cpp 复制代码
#include<stdio.h>
int main()
{
	char ch1[4] = { 'a','b','c' };
	char ch2[4] = "abc";
	char ch3[] = { 'a','b','c' };
	char ch4[] = "abc";

	return 0;
}

这里定义了4个字符型数组,打开监视功能可获取这些数组的初始化内容,如下所示:

观察数组ch1和ch2初始化内容一致,但数组ch3和ch4存放的内容不同,这是因为字符串是以字符"\0"为结束字符存放的,这里初始化时需要注意。

数组可以进行遍历操作,通过循环结构来依次访问数组的每个元素。例如,可以使用for循环来遍历数组中的所有元素。如下所示:

cs 复制代码
#include<stdio.h>
int main()
{
	int arr[] = { 0,1,3,4,6,9,5,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;

	for (i = 0;i < sz;i++)
	{
		printf("%d ", arr[i]);
        printf("&arr[%d]=%p\n", i, &arr[i]);
	}
	return 0;
}

运行结果如下:

2.二维数组

C语言中的二维数组是一种特殊的数组,它可以存储多行多列的元素。二维数组可以理解为一个表格,其中每个元素都有行索引和列索引。

在C语言中,二维数组的声明格式为:类型名 数组名[行数][列数];例如:int matrix[3][4]; 表示声明了一个包含3行4列的整数二维数组。

二维数组的元素可以通过两个索引来访问,第一个索引代表行索引,第二个索引代表列索引。例如,要访问二维数组matrix中的第一行第二列的元素,可以使用matrix[0][1]。

二维数组的元素可以通过赋值来初始化,或者在声明时指定初始值。例如,int matrix[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 表示声明了一个3行4列的整数二维数组,并将其初始化为指定的值。

二维数组可以进行遍历操作,通过嵌套循环来遍历数组的每个元素。外层循环用于遍历行,内层循环用于遍历列。例如,可以使用两个嵌套的for循环来遍历二维数组中的所有元素。如下所示:

cs 复制代码
#include<stdio.h>
int main()
{
	int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	int i = 0;
	for (i = 0;i < 3;i++)
	{
		int j = 0;
		for (j = 0;j < 4;j++)
		{
			printf("%-2d ", arr[i][j]);//%-2d表示左对齐
		}
		printf("\n");
	}
	return 0;
}

运行结果如下:

输出二维数组中每个元素的地址,如下:

从上面可以看出,C语言中的二维数组实际上是一维数组的数组,即每个元素都是一个一维数组。因此,二维数组在内存中是连续存储的,与一维数组存储方式一致,每个一维数组的长度可以不同。

需要注意的是,C语言中的二维数组不会进行边界检查,因此在使用二维数组时要注意避免越界访问。

相关推荐
王哈哈^_^3 分钟前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
..Cherry..16 分钟前
Etcd详解(raft算法保证强一致性)
数据库·算法·etcd
商汤万象开发者33 分钟前
LazyLLM教程 | 第13讲:RAG+多模态:图片、表格通吃的问答系统
人工智能·科技·算法·开源·多模态
Lee_yayayayaya1 小时前
本原多项式产生m序列的原理
算法
民乐团扒谱机1 小时前
实验室安全教育与管理平台学习记录(七)网络安全
学习·安全·web安全
蒙奇D索大1 小时前
【11408学习记录】考研英语长难句精析:三步拆解真题复杂结构,轻松攻克阅读难关!
笔记·学习·考研·改行学it
zd2005722 小时前
AI辅助数据分析和学习了没?
人工智能·学习
蒙奇D索大2 小时前
【算法】递归的艺术:从本质思想到递归树,深入剖析算法的性能权衡
经验分享·笔记·算法·改行学it
逐步前行2 小时前
C数据结构--排序算法
c语言·数据结构·排序算法
王哈哈^_^2 小时前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计