文章目录
1. 数组的概念
是由多个相同类型的(数据/元素)所组成的集合;
由此我们可以得知。
1.数组的元素可以是一个或者多个,但一定不能是0个。
2.元素的类型一定是相同的。
数组分为一维数组和多维数组,多维数组中比较常见的是二维数组。
2. 一维数组
2.1 一维数组的创建
一维数组创建的基本语法如下:
type ArrName[常量值];
type是数组中所数据的类型,可以说char、int、float等,也可以是自己创建的类型。
ArrName是数组的名字,这根据实际情况,取有意义的就可以了。
[]中的常量值是决定数组的大小的,根据实际情况取对应的值就可以了。
例如
int name[30];//班级学生名字
int arr[10];
char ch[10];
2.2 一维数组数组的初始化
在创建数组的时候需要设立初始值,这一行为被称之为初始化。
怎么初始化?
用一般用大括号{} 来初始化,将数据存入大括号内。
一维数组初始化一共有两种;
//完全初始化:[]中的常量值是多少,就设立多少个元素
int arr[5] = {1,2,3,4,5};
//不完全初始化:设立的元素个数比[]中的常量值小
int arr[5] = {1};//未被手动初始化的元素会自动初始化为0
//错误的初始化:设立的元素个数比[]中的常量值大
int arr[3] = {1,2,3,4};//这样会造成越界访问
一维数组在初始化时可以省略**[]中的常量值**,C语言会根据初始化元素的个数来推断出数组元素个数的多少。
int arr[] = {1,2,3,4}//C语言会推断出数组元素个数为4
2.3 一维数组的类型
数组也有类型,数组的类型是一直自定义类型,将数组名去掉,留下来的就是数组的类型。
例如
例如 char arr1[10]; int arr2[10]; short arr3[10];
arr1的类型就是char [10];arr2的类型就是int [10];同理,arr3的类型也就是 short [10]。
2.4 一维数组的使用
我们将学习一维数组的基本语法,一维数组可以存放数据,存放的目的就是为了对数据进行操作,那我们该如何使用一维数组来对数据进行操作呢?
2.4.1 数组下标
C语言规定数组是有下标的,下标从0开始,假设一个数组里有n个元素,那么第n个元素的下标就为(n-1),下标就类似与数组元素的编号。
例如
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
C语言给数组的访问提供了一个操作符[],这个操作符叫做下标引用操作符
有了下标引用操作符就可以轻松的访问到数组的元素,例如我要访问下标为4的元素,我们就可以直接使用arr[4],如果要访问的是下标为9的元素,那就直接使用arr[9]
代码如下:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("arr[5] = %d\n", arr[4]);//5
printf("arr[9] = %d\n", arr[9]);//10
return 0;
}
运行结果
2.4.2 打印数组元素
如果我们想要访问整个数组该怎么办呢?
那我们就产生数组每个元素的下标就好啦,我们直接使用for循环产生0~9的下标,接下来在数组访问就好啦。
代码如下:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果:
2.4.3 输入数组的元素
明白了数组的访问,我们当然也可以根据自己的需求进行输入啦。
代码如下
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果:
2.5 一维数组如何存储的?
有了前面的知识,我们使用数组就没什么问题啦,但如果我们要更深入地了解数组,那最好了解数组在内存中是如何存储的。
从0到9打印数组元素的地址:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}
运行结果:
根据运行结果我们看到,随着数组下标的增长,数组元素地址是由低到高增长的,而且两两相邻的元素之间相差4个字节(因为int类型大小为4个字节);由此,我们可以得出结论:数组在内存中是连续存放的,这就在后面为我们使用指针访问数组奠定了基础
2.6 sizeof计算元素个数
在遍历数组时,我们会想知道数组的元素个数,C语言有办法使用程序计算来知道数组的个数吗?
有;可以使用sizeof。
sizeof是C语言的关键字,是用来计算类型和变量的大小,其实也可以用来计算数组的大小。
计算过程
sizeof计算数组大小
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("sizeof(arr) = %d", sizeof(arr));
return 0;
}
这里的输出结果为40,计算的是数组占内存空间的总大小,单位是字节(byte)
sizeof计算数组元素大小
因为我们知道数组每个元素的类型都是相同的,所以我们计算出一个元素的所占字节的大小,就可以计算出数组的元素个数,我们这里计算第一个元素就可以啦。
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("sizeof(arr[0]) = %d", sizeof(arr[0]));
return 0;
}
sizeof计算元素个数
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
printf("数组的元素个数为 %d", sz);
return 0;
}
以后我们在代码编程中需要数组元素个数的时候就不用固定死了,使用上面的计算,不管数组怎么变,我们都能得出相应的数组元素个数啦。
结语
感谢您能阅读完此片文章,如果有任何建议或纠正欢迎在评论区留言。如果您认为这篇文章对您有所收获,点一个小小的赞就是我创作的巨大动力,谢谢!