本篇博客来介绍一下数组的相关知识。
一、什么是数组
数组是由数据类型相同的一系列元素组成。
需要使用数组时,通过声明数组告诉编译器数组中有多少个元素和这些元素的类型。
来看一下几个数组的声明
int a[10]; //含有10个int类型的元素的数组
float b[10]; //含有10个float类型的元素的数组
char c[10]; //含有10个char类型的元素的数组
[]表明a, b, c都是数组,方括号中的数字表示这个数组所含有的元素的个数。
二、如何访问数组
上面我们声明了数组,那么应该怎么访问数组呢?
访问数组我们可以通过数组的下标(或者叫索引)来表示数组中的各元素,数组的下标都是从0开始的。a[0]就表示数组中的第一个元素,a[9]就表示数组中的最后一个元素。
三、初始化数组
初始化数组的时候,可以用以逗号分隔的值列表(用花括号括起来)来初始化数组,个元素值之间用逗号分隔开。
来看一个简单的例子。
int num[5] = {1, 2, 3, 4, 5};
我们打印所有数组中的元素可以使用一个for循环来打印
#include <stdio.h>
int main()
{
int num[5] = {1,2,3,4,5};
for(int i = 0; i < 5; i++)
{
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
打印出来的结果是 1 2 3 4 5。
以上是给所有的元素都初始化,现在来给前连个元素初始化看看会发现什么情况
将初始化的语句稍微改变一下就可以了
int num[5] = {1,2};
来看看结果是什么
结果变成了这样,没有初始化的元素都被默认初始化为0。那么是不是不用初始化数组,是不是数组中的内容都会被初始化为0呢?我们再改变一下例子,只声明数组,不给它初始化。
int num[5];
看看结果是否和我们预期的一样呢
这个时候数组中元素的值竟然变成了这样,是一些随机数,我们一般都叫这些值为垃圾值。
【注】:如果我们不初始化一个数组,而且这个数组在程序的后面又没有被赋值,那么这个数组中的元素的值都是垃圾值。如果只初始化了一部分值,那么后面的几个值都会被初始化为0。
四、给数组元素赋值
声明数组之后我们可以通过下标来给数组中的某个元素赋值。
我们通过一个简单的例子来介绍一下给数组中的元素赋值
#include <stdio.h>
int main()
{
int a[5]; //声明有5个int类型的元素的数组
int b = 2;
//依次给这5个元素赋值
for(int i = 0; i < 5; i++)
{
a[i] = i * b; //将b 乘以i的值赋给a中的元素
}
//打印a中的元素
for(int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
来看一下最后的结果
【注】:我们给数组赋值的时候不能再利用大括号给数组赋值了,利用大括号只能给数组初始化。
五、数组的边界问题
我们在使用数组的时候一定要注意数组的边界问题。
我们首先定义一个含有十个int类型的元素的数组。
int num[10];
这个数组下标的起始下标是0,最后一个元素的下标是9。a[10]是无效的!!!
C语言程序不会编译的时候不会对数组的边界进行检查,所以我们自己写代码的时候一定要防止出现下标越界的问题。
一旦下标出现越界就会出现意想不到的问题。有时候就会导致程序终止运行。