1.数组的概念
数组是一组相同类型元素的集合
- 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
- 数组中存放的多个数据,类型是相通的。
数组分为一维数组,和多维数组,多维数组一般比较多见的是二维数组。
2.一维数组
2.1数组创建
一维数组创建的基本语法:
type arr_name[常量值];
存放在数组中的值为数组的元素,数组在创建的时候可以指定数组的大小和元素类型。
type
是存放数据的类型,可以是int
char
float
…arr_name
指的是数组的名字[ ]
中的常量值用来指定数组大小
比如想存储5个人的年龄,那就可以创建一个数组:
int age[5];
这个数组意思就是,age
数组有5个元素,每个元素为int
类型
2.2 数组的初始化
数组在创建的时候我们需要给一些初始值,这就成为初始化;数组的初始化一般使用大括号,将数据放在大括号中:
比如我们有一个大小为5的数组,把里面每个元素都给定初始值,这种就叫做完全初始化:
// 完全初始化
int age[5] = { 1,2,3,4,5 };
char str[3] = { 'a', 'b', 'c' };
而假如只想给前面两个元素初始化,这就叫做不完全初始化,而剩下的元素默认初始化为0:
// 不完全初始化
int age[5] = { 1,2 };
char str[3] = { 'a' };
注:对于字符数组的初始化还可以使用字符串来初始化:
// 使用字符串初始化
char str1[5] = "abc";
2.3 数组的类型
去掉数组名留下的就是数组的类型。
int arr1[10];
int arr2[20];
char ch[5];
这里数组arr1的类型就是int[10]
,数组arr2的类型就是int[20]
,数组ch的类型就是cahr[5]
。
3. 一维数组的使用
3.1 数组下标
C语言规定,数组是有下标的并且是从0开始,数组有n个元素,那么最后一个元素的下标就是n-1,我们可以简单理解为数组里面元素的编号。
在C语言中,提供了一个下标访问操作符[ ]
,我们就可以通过这个操作符来访问数组里的元素。
比如要把数字:1打印到屏幕上,那这个数字在数组里的下标就是:0。
int main()
{
int arr[5] = { 1,2,3,4,5 };
printf("%d\n", arr[0]);
return 0;
}
3.2 数组的输出
如果想把数组中的元素全部打印在屏幕上,可以使用循环:
int main()
{
int arr[5] = { 1,2,3,4,5 };
for (int i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3.3 数组的输入
同理,如果要给数组输入元素的话,也可以使用循环来完成:
这里输入:1 2 3 4 5
int main()
{
int arr[5] = { 0 };
for (int i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
return 0;
}
4. 一维数组在内存中的存储
打印数组元素的地址:
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("arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}
数组随着下标的增长,地址是由低到高变化的,并且每个相邻元素之间相差4,这是因为一个整形是4个字节,所以可以知道:数组在内存中是连续存放的。
5. 计算数组的个数
sizeof
是一个操作符,可以计算类型或者变量大小,也可以计算数组的大小。
比如:
int main()
{
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));
return 0;
}
这里得到的就是说数组所占内存空间的大小,单位是字节。
而数组中所有元素类型都是相同的,我们还可以计算数组元素的个数:
int main()
{
int arr[10] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", sz);
return 0;
}