首页 > 代码库 > C语言之数组与指针(一)
C语言之数组与指针(一)
---恢复内容开始---
数组:内存连续的,同类型元素的集合;
从最基础的数组声明,数组初始化,数组赋值,数组遍历,到二维数组,再到指针数组,数组指针,以及数组和指针关系无疑都证明了数组在c语言中的重要地位;我们将一 一对其说明。
1.数组声明:float a[size] ; int b[size]; char c[size];(size是数组元素个数,必须为正整数 ; #define size 10 )
这样我们就声明了一个数组;但是在下面代码中我们可以看出了一个问题:没有初始化的数组中存储的是一些我们并不其意义的数据;所以某些时候初始化就显得尤为重要了。
2.数组初始化:主要有四种:
(1)一 一初始化,对数组每个元素都一 一赋值 int a[size] = {1,2,3,4,5,6,7,8,9,0};数组遍历的结果也是一 一对应;
(2)部分赋值, 对数组的部分元素赋值, int a[size] = {1,2,3}; 前三个元素一 一对应,后7个则都会被默认为 0 ;
(3)指定元素赋值,这种赋值方式有一定的偏重性,对重要的元素进行指定赋值 ,int a[size] = {[3]=4,2,[7]=10,3};遍历的结果为{0,0,0,4,2,0,0,10,3,0}; (由初始化器完成的)
(4)直接全部清零, int a[size] = {0}; 遍历结果的所有元素都为零 ,字符型的都为NULL;还有一种特殊的,不安全的初始化方式: int a[] = {1,1,1,1,1} ; 系统自动计数,默认其有五个元素,多用于字符数组int b[] = {1,2,3};(最好不用)
* 值得注意的是const修饰的只读数组只能初始化,而不能赋值;
3.数组赋值: 很多人认为初始化和赋值是相同操作,没有区别;但是通过const修饰的数组的实例可以看出初始化和赋值就存在着显而易见的区别;那就是时间上的差异,初始化是在系统分配资源的时候完成的,赋值则是在运行过程中对数据的后来操作。
需要注意的几点:
(1)数组不能像初始化一样用花括号赋值;
(2)数组赋值不能越界,例如:int a[10] ,我们对他赋值是只能对下标为0—9的元素进行赋值,其他的赋值都为越界,是对操作系统的“冒犯”。这也是初始化时我们要指定数组大小的原因,完全是方便程序员的操作,由系统自己计数则很容易越界。
(3)不能以数组为单位赋值,赋值只能是以元素为单位进行的。
4.数组遍历: 通过一层for循环完成,循环次数为元素个数(0到size-1)。
5.二维数组及多维数组: 上面我们说了,数组的元素可以为任何数据类型,那么它的元素为一个数组也是顺理成章的事了,这样我们就可以通过数组的数组“仿真”出一个二维的或者多位的数组,这也是很多人怀疑多维数组是否存在的原因。但是换句话说数组的简单的数学模型实现也是C语言的亮点所在。
声明:int A [i][j]; char C[i][j][k];
初始化:int B [2][3]={{0,2,4},{1,3,5}};或者: int B [2][3]= {0,2,4,1,3,5};同时它也遵循普通数组的初始化方式。
遍历:由数组的维度决定,几维数组就需要几层循环去遍历。
---恢复内容结束---
C语言之数组与指针(一)