I一、一维数组的定义
要使用数组,必须在程序中先定义数组,即通知计算机;由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。
定义数组的一般形式:
类型符 数组名 [常量表达式]
(1)数组的命名规则和变量名相同,遵循标识符命名规则。
(2)在定义数组时,需要制定数组中元素的个数,方括号中的常量表达式用来表示元素个数,即数组长度。注意,数组的下标是从0开始的。
(3)常量表达式中可以包括常量和符号常量,不能包含变量,即c语言不能对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值。如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或者常量表达式。
二、一维数组的引用
(1)引用数组元素的表示形式为
数组名[下标],下标可以是整形常量或整形表达式
三、一维数组的初始化
(1)为使程序简洁,常在定义数组的同时,给个数组元素赋值,这称为数组的初始化。可以使用初始化列表的方法实现数组的初始化。
(2)在定义数组时对全部数组元素赋予初值
例:int a[10]={0,1,2,3,4,5,6,7,8,9};
(3)可以只给数组中的一部分元素赋值
例:int a=[10]{0,1,2,3,4,5}
(4)如果想使一个数组的全部元素值为0可以写成int a[10]={0};
(5)在对全部元素赋初值时,由于数据的个数已经确定,因此可以不指定数组的长度。
例:int a[5]={1,2,3,4,5};也可以写成int a[]={1,2,3,4,5};
但是如果数组的长度与提供处置的个数不相同,则方括号内的数组长度不能省略。
一维数组举例
#include <stdio.h>
int main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for (i=0;i<20;i++)
{
if (i%5==0)printf(“\n”);
printf(“%12d”,f[i])
}
printf(“\n”);
return 0;
}
四、一维数组的存储
随着数组下标的增加,元素的地址也在有规律的递增,由此可以得出结论:数组在内存中是连续存放的。
五、一维数组的指针访问
指针可以理解为一个变量,一个专门用来存放地址的一个变量。指针其实就是一个指针变量。数组的数组名其实就是数组的首元素的地址,拿到了数组首元素的地址,这样就可以是用指针来访问我们的数组。
II 二、二维数组的定义
(1)二维数组定义的一般形式为
类型说明符 数组名[常量表达式][常量表达式]
例如:float a[3][4];即定义了一个3行4列的数组,第一维有3个元素,第二维有6个元素,第三维有9个元素。
(2)二维数组的引用
二维数组个一维数组一样通过数组名[下标][下标]的形式引用。
例如 a[3][4]即引用数组a的第3行的第4列的元素。
(3)二维数组的初始化
1、可以使用初始化列表对二维数组初始化
2、分行给二维数组初始化
例如:int a[3][4]={1,2,3,4},{5,6,7,8},{9,10,11,12};
3、可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。
例如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
4、可对部分元素赋值
例如:int a[3][4]={{1},{5},{9}};
(4)二维数组的存储
二维数组个一维数组是一样的,在内存中也是连续存储的。
5、二维数组的访问和一维数组也是一样的,即拿到数组首元素的地址,用指针进行访问。