一、什么是数组
什么是数组呢?很多同学都认为数组就是一组数据,其实数组不仅仅是一组数据,还是一组有序的数据。下面我们来给出对数组的定义。
- 数组是可以在内存中连续存储多个元素的结构,也可以理解为数组是一组有序的数据集合;
- 一个数组中的数组元素都是属于同一数据类型;
- 数组中的元素是由数组名和下标组成;
- .数组又有一维数组、二维数组、N维数组以及字符数组等;
二、为什么要使用数组
前面我们说了数组是可以在内存中连续存储多个元素的结构,也是一组有序的数据集合,当我们需要连续存放很多数据的时候就需要用到数组了。举一个简单的例子,比如有一个数列,让你直接输出数列中第五个数,这个时候就需要用到数组来存放这个数列了,每一个数组元素代表数列中的一个数,按顺序存放,直接输出数组的第五个元素即可。
三、一维数组
前面我们举的例子就是一维数组,一维数组是数组中最简单的。下面我们来对一维数组进行的详细学习。
1.定义和引用一维数组
我们以 类型名 数组名[常量表达式] 来定义一维数组,其中方括号里面的常量表达式表示的是数组中元素的个数,通常也叫数组长度。定义好一个一维数组以后,我们就可以通过数组名和下标来引用数组了,需要注意的是数组的下标都是从0开始的,即数组首元素的下标为0,例如:
int a[10];//定义一个长度为10的整型数组a
int b=a[0];//这里的b为数组a的第0个元素,即首元素
int c=a[1];//c为数组a的第1个元素
这里顺便讲一下如何计算一个数组的长度,如下:
int len=sizeof(a)/sizeof(a[0]);
//sizeof(a)表示数组a所占存储空间的大小
//sizeof(a[0])表示数组a中一个元素所占存储空间
2.一维数组的初始化
我们都知道如果定义了一个变量,就要给它赋值,也就是对它进行初始化,否则这个变量就没有什么意义。数组也是一样,刚讲了一维数组的定义,下面我们来看看如何对一维数组进行初始化。
int a[10]={0,1,2,3,4,5,6,7,8,9};
//这里的a[0]=0,a[1]=1,a[2]=2,以此类推
这是一种对数组进行初始化的方法,即在定义数组时对全部数组元素赋初值,我们也可以数组中的一部分元素赋值,剩下一部分没有赋值的数组元素会被自动赋值为0,例如:
int a[10]={0,1,2,3,4}
//这里的后五个元素没有赋值均默认为0
除此之外,如果确定了数组元素的个数,在定义的时候也可以不用写输出数组的长度,例如:
int a[]={1,2,3};
//这里默认数组的长度为3
等同于
int a[3]={1,2,3};
3.一维数组的使用
定义和初始化了一个数组之后,我们就可以使用这个数组了,例如:
int a[5]={0,1,2,3,4};
for(int i=4;i>0;i--)
cout<<a[i]<<endl;//逆序输出数组a的元素
四、二维数组
很多同学可能会问,为什么还要学习二维数组,有一维数组不就够了么。但假如有5个队伍,每个队伍有10个成员,需要你去存储这些成员的成绩,你会怎么去存储呢,这个时候就需要用到二维数组了。
和一维数组类似,我们以 类型符 数组名[常量表达式][常量表达式] 来定义一个二维数组,例如:
int b[3][4];
表示定义了一个int型的二维数组,其中第一维有3个元素,第二维有4个元素,这里可以简单的把它理解成一个3行4列的矩阵,这里需注意的是数组a可用的“行下标”的范围是0~2。“列下标”的可用范围是0到3。
二维数组的赋值如下:
int b=[3][4]={{1,2,3,4},{5,6,7,8},{9,0,0,0}};
int c[3][4]={1,2,3,4,5,6,7,8,9,0,0,0};
这里的b和c都是一样的,也可以跟一维数组一样只对部分元素赋值,其余元素均默认为0,这里就不再赘述了。初始化后的数组元素如下:
1 2 3 4
5 6 7 8
9 0 0 0
前面说了这可以看作是一个三行四列的矩阵,然后我们就可以对这个二维数组进行引用了,例如:
int a=b[1][2];
表示的是二维数组b中第1行第2列的元素,即a=7。需要注意的是这里的数组下标也是从0开始的。
下面我们来看一个使用二维数组的简单例子:
int b[3][4]={1,2,3,4,5,6,7,8,9,0,0};
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
cout<<b[j][i]<<" ";
};
cout<<endl;
}
这个例子是把一个三行四列的二维数组转变成一个四行三列的二维数组输出,列举这个例子主要是想让读者体验体验二维数组下标的使用。
以上我们学习了一维数组和二维数组,以此类推三维数组,四维…一直到n维也是同样的道理,没讲到的就留给读者去探索了。
五、字符数组
前面我们还提到了字符数组,大家都还记得吧,不记得的是该要好好反省一下了。字符数组也是一样,顾名思义,这其实就是一个装字符的数组,例如:
char c[]="Hellow world";
这就是一个字符数组了。用法很多都是大同小异,我就不再多说了。
六、结束语
希望本文能对读者带来一些收获。读者如有不懂的可私聊我,我会一一回复,如有错误,也请读者海涵。由于是初次写文,期待大家的浏览与评论,可能很多人都会觉得这也太小菜一碟了吧,确实啊,但是不急,慢慢来哦。