前面我们学完了循环,今天我们就来学习数组!
数组分为一维数组,二维数组等等,他们是一个可以存储相同类型的元素的集合,数组在C语言中扮演着重要的角色,它是许多数据结构和算法的基础。本篇文章将介绍C语言中数组的基本概念,并举例几个基础的例子来帮助理解。
数组的基本概念
在C语言中,数组是由相同类型的元素组成的序列。每个元素都有一个唯一的索引,用于访问和操作该元素。数组的大小是固定的,一旦创建,就不能改变。
数组的创建
int arr[10] = {0};
格式:
数据类型 数组名[最多元素个数] = {0(数组元素)};
这里,我们将数组的类型定义为整形,数组名创建为arr,10是我们数组的最多元素个数,并将所有元素初始化为0.
当然了,还有一种写法
int arr1[] = {1,2,3,4,5};
这种写法是直接将数组元素写入数组里,编译器会根据元素个数自动定义数组的大小
你还可以这么写:
int arr2[5] = {1,2,3};
这里,我们将数组最多的元素个数定义为5,后面虽然只写入了三个数,但C语言会自动帮我们补充两个0以达成5。
注意:
[ ] 这里面的东西只能写正整数,不能是变量。(C99之后以及gcc编译器支持,但现在少用了)初学我们默认为只能写正整数。
数组的元素修改
我们都知道数组里的下标是从0开始的,当我们需要找第三个数的时候下标就是2
int arr1[5] = {1,2,3,4,5};
arr1[2] = {7};
这个代码的意思是将arr1数组里下标为2的数据改成7
遍历打印数组:
printf("%d", arr[0]); 这串代码可以打印arr数组里第一个元素,那么,如何打印全部的元素内容呢?
这里我们可以借助循环来打印。
#include <stdio.h>
int main()
{
int arr1[5] = {1,2,3,4,5}; int i = 0;
for (i = 0; i < 5; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
return 0;
}
这里,就有同学会问了:"哎同学!你刚刚不说数组里[ ]里面的不能是变量吗,为什么这里代码却用了变量?"
哈哈,其实,创建数组的时候不能是变量,但访问的时候就可以了。这点要记住。
我们来看结果:
Ps:不用管./a.out是什么意思,看底下那个
二维数组
二维数组在c语言中同样常用,它跟一维数组几乎是大差不差的
int arr[2][3] = {0};
这就是一个 非常简单的二维数组,它由行与列组成。下标都是从0开始。
但是这里要注意,二维数组创建时只能忽略前面的[ ],而不能忽略后面的[ ],前面代表行,后面代表列。至于为什么不能忽略,我举个例子
int arr1[][] = {1,2,3,4,5,6};
你能知道这是几行几列的数组吗?
看不懂。
int arr1[3][] = {1,2,3,4,5,6};
如果改成上面这样呢?
这里是一个三行的数组没错,但是推导不出它是几列呀,你可以是三行2列,三行3列,甚至更大都可以,空出来的补0就好了。但是显然不合理
所以我们改成如下形式:
int arr1[][3] = {1,2,3,4,5,6};
这里是3列,编译器就会开始识别:"哦,这里3列,我把1,2,3看成一行,再把4,5,6看成一行,那么这就是个两行三列的数组。。
所以这里我们就发现个非常重要的结论:二维数组是可以看作是一维数组的,只需要将每行看作一个整体就行,所以后面的指针取地址取得就是二维数组第一行的值(这里还没讲到指针,所以稍微知道一下就可以了)
结语
以上就是今天数组的全部内容。如果有错误欢迎在评论区指出来,感谢大家观看~
小插曲:这篇文章是在平板上写的,因为电脑不在身边,代码的书写与编译也是用云服务器搞的,所以看的会有些蹩脚。1520字数还挺幸运哈哈