C语言--数组
来源:互联网 发布:反dns劫持 软件 编辑:程序博客网 时间:2024/05/22 00:30
数组,在任何一种编程语言中都是很重要的一种数据类型,在任何的开发过程中,在都是很常用的到。C语言中的数组是存储一个固定大小的相同类型元素的顺序集合。
数组的声明不是声明一个变量,而是声明一个数组变量,来表示一个个单独的变量。数组的声明,其实是告诉编译器去开辟空间,用来存储数组元素,也就是一个一个的变量。
那么,先来看看数组的声明:一个数组的声明,一般要有3个部分:1、数组类型;2、数组名称;3、数组长度。
int array[10];
下面,我们来介绍下这个数组。上面声明的数组,数组类型是int类型,数组名称是array,数组长度是10。这里需要说明一下,数组类型指的是数组中元素的类型,这里就映照了开始的时候我们说的,数组是相同类型元素的顺序集合。
声明了数组以后,怎么给数组赋初始值。那就是数组的初始化:
int array[10] = {1,2,3,4,5,6,7,8,9,0};
这样就给array数组初始化赋值了,{}内的元素个数不能大于数组长度。这个数组是一个int类型的数组,有10个元素,分别是:1,2,3,4,5,6,7,8,9,0。顺序不能错,因为我们前面说了数组是一个顺序集合。如果省略掉数组长度,那么数组的长度为初始化时数组中元素的个数。如:
int array[] = {1,2,3,4,5,6,7};
这个数组的长度就是7。
说完了数组的声明和初始化,下面再来说说,数值的使用,也就是访问数组元素。这里才是真正体现数组优势的地方。
数组的访问,可以通过数组名和索引来进行。这里来解释下数组索引。所谓数组索引就是数组中各个元素对应的数字。在数组这个数据类型中,第一个数组元素的索引为0,往后逐个+1。所以,想要访问上面初始化的数组的第二个元素,只要使用 array[1] 就行了。这里需要注意一点,[]中的索引不能大于数组长度-1不然会抛出数组越界的错误。
说到这里,还是没有看到数组的优势在哪。那么接着往下来。数组元素的访问时可以使用索引进行访问的,而且数组的索引还是从0开始递增的。这样的结构让我不禁想到了for循环了。对于一个for循环来说,数组这个东西简直太好用了。在循环中,使用i作为数组的索引,可以很轻易的访问数组中的每一个元素。当然,数组的好处还不止这一点。方便了变量的读写也是一个很重要的好处。
下面我们来写一个完整的数组证明,初始化,访问的代码片段:
int main(int argc, const char * argv[]) {
//数组声明
int array[10];
for (int i = 0; i < 10; i++) {
//写部分,数组初始化赋值。
array[i] = 100 + i;
}
for (int j = 0; j < 10; j++) {
//读部分,数组循环访问。
printf("array[%d] = %d\n", j, array[j]);
}
return 0;
}
运行结果:
array[0] = 100
array[1] = 101
array[2] = 102
array[3] = 103
array[4] = 104
array[5] = 105
array[6] = 106
array[7] = 107
array[8] = 108
array[9] = 109
Program ended with exit code: 0
上面对数组进行了简单介绍,下面我们在继续看看数组还有别的人可供我们学习的地方。
1、二维数组(多维数组):一个二维本质上是一个一维数组的列表。
变量,一维数组,二维数组,三维数组,我们理解起来可以用点,线,面,体来帮助我们理解,一个变量对应点,一个一维数组是变量的顺序集合,线是点的顺序集合,所以一维数组对应线,二维数组是一维数组的列表,面也是线的顺序列表。同理推导到三维数组和体。这样理解起来,多维数组也就很简单了。下面都以二维数组为例,三维以上的数组在实际应用中很少见。
对于一个二维数组,声明方式与一维数组(下面都简称为数组)相同:
int array[2][3];
这里出现了两个[],第一个表示行,第二个表示列。上面的代码就是声明了一个2行3列的二维数组,下面我们画一张图来分析这个二维数组,看到图以后,其实二维数组就很简单了。
通过上面的图片,我们可以看出,二维数组的每一行都是一个数组。那么,对于二维数组的初始化就简单多了。只是将几个一维数组作为数组元素放到另一个数组中:
int array[2][3] = {{1,2,4},{8,6,0}};
还有一种初始化方式:int array[2][3] = {1,2,4,8,6,0};
这两种方式是相等的效果,但是推荐使用第一种,因为看着清晰,不容易出错。二维数组的访问和一维数组相同,也是使用索引,只是在二维数组中使用的是2个索引,第一个索引([]内的数字)表示元素在第一层{}中的位置,第二个索引表示在第一个索引所对应的{}内对应的数字。看着有点绕,那么我看来根据上面初始化的二维数组解释一下。
int array[2][3] = {{1,2,4},{8,6,0}};
在这个数组中,如果我们访问使用索引数组访问 array[1][2] 这个时候第一个[]中的1就表示 {{1,2,4},{8,6,0}} 这个二维数组最外层{}中的{8,6,0}这个元素,因为前面一个的索引是0。第二个[]中的2表示{8,6,0}这个数组中的第三个元素0.所以,array[1][2]对应的就是0.下面我们也来写一个完整的二维数组的读写:
int main(int argc, const char * argv[]) {
//数组声明,和初始化
int array[5][3] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15}};
//循环访问数组
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("array[%d][%d] = %d\n", i, j, array[i][j]);
}
}
return 0;
}
打印结果:array[0][0] = 1
array[0][1] = 2
array[0][2] = 3
array[1][0] = 4
array[1][1] = 5
array[1][2] = 6
array[2][0] = 7
array[2][1] = 8
array[2][2] = 9
array[3][0] = 10
array[3][1] = 11
array[3][2] = 12
array[4][0] = 13
array[4][1] = 14
array[4][2] = 15
Program ended with exit code: 0
到这里,数组的基本知识就已经差不多结束了。关于数组的其他知识点,在以后的文章中,还会再整理给大家。
- C语言动态数组
- C语言的数组
- c语言 数组 指针
- c语言数组详解
- C语言字符数组
- C语言--指针,数组
- C语言变长数组
- C语言数组
- C语言数组
- 【C语言】数组--待续
- C语言数组
- C语言 数组拆分
- c语言 动态数组
- C语言数组
- C语言:数组
- c语言指针数组
- c 语言数组
- C语言变长数组
- 判断java中两个对象是否相等
- 字符串和数字的格式化(基础)
- openwrt添加自定义应用程序开机启动
- 1062.Talent and Virtue (25)
- Php像Jquery一样解析和抓取Html元素
- C语言--数组
- 数据化管理第一步,你真的会做报表吗?
- windows下nmake一些错误的解决办法
- Android-->打造无限循环的RecyclerView
- X-Pack-5.2.1安装
- ubuntu16.04下交叉编译 MultiCol-SLAM 过程
- UIViewContentMode各类型效果
- NSOperation
- 映射实体关联关系