1. 概述
当我们需要存储一系列的数值时,数组便是不二的选择,数组如其名,就是一组数的组合,可是这“数”又些许不同,它并不是传统意义上的数,而是数据类型的数,有指针,有结构体,也有函数指针数组。
2. 一维数组
当把相同数据类型的数按照一个维度在内存中存储时,这个数组就是一维数组,如图所示:
声明一维数组的方法:
int a[10] = { 0,1,2,3,4,5,6,7,8,9 };//完全初始化
int b[] = { 0,1,2,3,4,5,6,7,8,9 };//不申明数组长度
int c[10] = { 0 };//数组初始化为全零
int d[10] = { 1,0,2 };//数组不完全初始化,后七个数全为零
一维数组的访问
int a[10] = { 0 };
int first = a[0];
int last = a[9];
注意:数组的下标(中括号内的数字)都是从零开始的,如上代码块的数组,其下标范围为0~9.
3. 二维数组
二维数组便是在一维数组的基础上多了一个维度,原来的一维数组为一行,则二维数组就在行的基础上多了几列。如下图所示:
声明方法:
int a [3][10] = { { 0,1,2,3,4,5,6,7,8,9 },{ 0,1,2,3,4,5,6,7,8,9 },{ 0,1,2,3,4,5,6,7,8,9 }};
//完全初始化
int b [][10] = { { 0,1,2,3,4,5,6,7,8,9 },{ 0,1,2,3,4,5,6,7,8,9 },{ 0,1,2,3,4,5,6,7,8,9 }};
//省略行下标
注意:在二维数组的声明的时候,不得将列数省略。在大括号内的大括号分别是第0行,第1行,第二行内的数字。
4.重要补充
1.数组名为数组首元素的地址
2.数组取地址时,如:int a[10] = {0}; &a;为整个数组的地址,其访问范围为整个数组。
3.当使用sizeof(a)运算符去计算数组大小时,其计算的是整个数组的大小,一个int为四个字节,则sizeof(a)运算结果为四十个字节(按照上述数组的情况。)
4.数组千万不可越界访问,声明了 int a[10]时只能访问0~9的下标,不能访问a[10]及其后边的内存,常常会导致意想不到的问题,严重时会导致程序终止!!!