首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >基本魔法语言数组 (一) (C语言)

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

作者头像
散峰而望
发布2025-12-23 12:46:27
发布2025-12-23 12:46:27
1290
举报

前言

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

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

1. 数组的概念

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

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

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

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

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

2.1 数组的创建

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

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

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

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

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

代码语言:javascript
复制
 int personal[20];

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

代码语言:javascript
复制
char ch[6];
double score[8];

2.2 数组的初始化

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

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

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

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

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

2.3 数组的类型

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

如下:

代码语言:javascript
复制
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,下标就相当于数组元素的编号,如下:

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

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

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

代码语言:javascript
复制
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的下标,接下来就可以进行访问了。

代码如下:

代码语言:javascript
复制
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 数组的输入

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

代码语言:javascript
复制
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.一维数组在内存中的存储

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

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

代码语言:javascript
复制
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也可以计算数组的大小。

比如:

代码语言:javascript
复制
int main()
{
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));
	return 0;
}
在这里插入图片描述
在这里插入图片描述

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

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

代码语言:javascript
复制
int main()
{
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr[0]));
	return 0;
}
在这里插入图片描述
在这里插入图片描述

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1. 数组的概念
  • 2.一维数组的创建和初始化
    • 2.1 数组的创建
    • 2.2 数组的初始化
    • 2.3 数组的类型
  • 3. 一维数组的使用
    • 3.1 数组下标
    • 3.2 数组元素的打印
    • 3.3 数组的输入
  • 4.一维数组在内存中的存储
  • 5.sizeof计算数组元素个数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档