基本魔法语言数组 (一) (C语言)


🌊用有趣的言语来阐述苦涩难懂的代码世界,让每一个技术都充满风趣!

🔭个人主页: 散峰而望

🚀学习方向: C/C++等方向

📌专栏系列:

💬人生格言: 冀以尘雾之微,补益山海,荧烛末光,增辉岁月。

🎬博主简介

文章目录


前言

如果说变量是散落的魔法卷轴,那么数组就是精心打造的卷轴陈列架 ,让知识有序归位,让力量整齐排列。在这里,你不再是那个手忙脚乱、四处寻找单个卷轴的学徒,而是能统御成百上千魔法元素 的列阵法师。管理一支魔法军团,只需要编号和阵列来组织他们,这正是数组的精髓。

准备好了吗?让我们一同打开这扇通往有序世界的大门,学习如何用数组这把钥匙,开启高效编程的魔法宝库!

1. 数组的概念

数组相当于一个魔法卷轴架 -- 一个专门存放同类魔法卷轴的固定架子,即一组相同类型元素的集合

从中我们可以发现两个有价值信息:

  • 数组中存放的是1个或多个数据,但是数组元素个数不为0。
  • 数组中存放的多种数据类型是一样的。

数组一般分为一维数组和多维数组,多维数组一般比较常见的是二维数组。

2.一维数组的创建和初始化

2.1 数组的创建

一维数组相当于单排卷轴架,其创建的基本语法如下:

复制代码
 type arr_name[常量值]
   |            |         
数组元素类型   数组名
常量值-数组元素的个数

放在数组的值被称为数组的元素 ,数组在创建的时候可以指定数组的大小数组的元素类型。

  • type指定的是数组中存放数据的类型,可以是:char、short、int、float等,也可以自己定义的类型。
  • arr_name指的是数组的名字,这个名字看情况起名,有意义就行。

比如:我们想存储某个公司近20天的人员情况,我们可以创建一个数组,如下:

复制代码
 int personal[20];

当然我们也可以根据需要创建其他类型和大小的数组:

复制代码
char ch[6];
double score[8];

2.2 数组的初始化

有时候,数组创建的时候需要给定一些初始值,这种就被称为初始化

那数组如何初始化呢?数组的初始化一般使用大括号 ,将数据放在打括号里面。数组如果进行了(完全)初始化,可以不指定数组的大小,是可以省略的。因为数组的大小是根据初始化的内容来推断

复制代码
完全初始化:
int arr1[5] = {1,2,3,4,5};

不完全初始化:
int arr2[4] = {1};

错误的初始化-初始化项多余
int arr3[3] = {1,2,3,4};

2.3 数组的类型

数组也是有类型的,数组算是一种自定义类型,去掉数组名留下的就是数组比喻的类型。

如下:

复制代码
int arr1[10];
int arr[12];
char ch[5];

arr1数组的类型是int [10]

arr2 数组的类型是int [12]

ch 数组的类型是char [5]

3. 一维数组的使用

学习了一维数组的基本语法,一维数组可以存放数据,存放数据的目的是对数据的操作,那我们如何使用一维数组呢?

3.1 数组下标

C语言规定数组是有下标的,下标是从0开始。如果数组有n个元素,最后一个元素的下标是n-1,下标就相当于数组元素的编号,如下:

复制代码
int arr[10] = {1,2,3,4,5,6,7,8,9,10};

在C语言中数组的访问提供了一个操作符**[]**,这个操作符叫:下标引用操作符

有了下标操作符,我们就可以轻松的访问到数组的元素,我们就可以轻松的访问数组元素了。比如我们访问下标为6时的元素,我们就使用arr[6],想要访问下标为2的元素,就可以使用arr[2],代码如下:

c 复制代码
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d\n", arr[3]);
	printf("%d\n", arr[8]);
	return 0;
}

3.2 数组元素的打印

如果想要访问整个数组的内容,那该怎么办呢?

只要我们产生所有元素下标就行,那我们就用for循环产生0∽9的下标,接下来就可以进行访问了。

代码如下:

c 复制代码
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

输出结果:

3.3 数组的输入

当我们明白了数组的访问,我们也就要根据需求,自己给数组输入想要的数据,如下:

c 复制代码
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

4.一维数组在内存中的存储

经过前面知识的保障,接下来我们使用数组基本上没有什么障碍了。如果想要深入了解数组,我们要进一步了解数组在内存中存储地址。

依次打印数组元素的地址:

c 复制代码
int main()
{
	int i = 0;
	int arr[10] = { 0 };
	for (i = 0; i < 10; i++)
	{
		printf("&arr[%d] = %p\n", i, &arr[i]);
	}
	return 0;
}

输出结果如下:

从数组的输出结果分析,数组随着下标的增长,地址由小到大变化,并且发现每两个相邻的元素之间相差4(因为一个整形是4个字节)。故可以得出:数组在内存中是连续存放的

5.sizeof计算数组元素个数

如果想要知道数组的个数,有没有方法计算数组元素个数吗?

可以用魔法度量仪 -- sizeof

sizeof是C语言中的关键字,是可以计算类型或者变量大小的,故sizeof也可以计算数组的大小。

比如:

c 复制代码
int main()
{
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));
	return 0;
}

这里输出的结果是40,计算的是数组所占内存空间的总大小,单位是字节

我们又知道数组的所有元素的类型都是相同的,那只要计算出一个元素所占字节的个数,数组的个数就能算出来。例如:

c 复制代码
int main()
{
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr[0]));
	return 0;
}

可以计算出一个元素的长度为4。

接下来就能计算出数组的元素个数:

c 复制代码
int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", sz);
	return 0;
}

可以看到结果是:10,表示有10个元素。

因此以后代码中需要数组元素个数的地方就不用固定写死了,使用上面的计算,无论数组怎么变化,计算出的大小也就跟着变化。

相关推荐
草梅友仁7 小时前
RSS Impact 1.17.0 发布与 Docker 服务器迁移经验 | 2025 年第 44 周草梅周报
docker·开源·github
MATLAB代码顾问8 小时前
MATLAB实现模糊PID控制
开发语言·matlab
虾说羊8 小时前
ssm面试题梳理
java·开发语言·rpc
Liudef068 小时前
基于Java的LLM长上下文数据预处理方案:实现128k上下文智能数据选择
java·开发语言·人工智能
那我掉的头发算什么8 小时前
【数据库】事务
数据库·sql·mysql·github·数据库开发
小妖同学学AI8 小时前
Rust 深度解析:基本类型的“精确”艺术
开发语言·后端·rust
我命由我123459 小时前
Guava - Guava 基本工具 Preconditions、Optional
java·服务器·开发语言·后端·java-ee·guava·后端框架
Python私教9 小时前
Rust 快速入门:从零到上手的系统指南
开发语言·后端·rust
ouliten9 小时前
C++笔记:std::variant
开发语言·c++·笔记