目录
一、初探程序中的数组
1.数组的概念
数组是相同数据类型变量的有序集合
—数组作为整体需要一个合法的命名(数组名)
—数组中的变量没有独立命名,只有在数组中的编号
—数组中的变量数量是固定不变的(数组大小固定)
2.数组的定义
语法:tpye Name [ size ]
示例:
int arr1[10]; //定义名为 arr1 的数组
//数组中一共有 10 个元素
//每个元素的类型为 int
double farr[5]; //定义名为 farr 的数组
//数组中一共有 5 个元素
//每个元素的类型为double
3.数组元素的访问
a.通过数组名 [下标] 的方式来访问元素
b.数组是一个有序的集合,每个元素有固定的下标
c.数组元素下标固定从0开始(可以使用变量作为下标)
示例:
int arr1[3];
arr1[-1] = 0; //ERROR
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
arr1[3] = 4; //ERROR
注意事项:
1.只有整型数才能作为数组的下标访问元素
2.下标越界是一种非常严重的编辑错误(工业级BUG来源)
3.下标越界带来的后果可能不会立即体现
二、数组特性深入剖析
1.数组的初始化
—语法:type Name [N] = { V0, V1, ... , Vn-1};
—意义:将数组中的元素分别初始化为 V0, V1, ... , Vn-1
int main ()
{
int arr[5] = {2,4,5,5,6};
int i = 0;
for (i = 0 ;i<5 ;i++)
{
printf("arr[%d] = %d \n", i, arr[i]);
}
return 0;
}
数组初始化技巧
(1)自动确认数组大小
type Name [] = {V0, V1, ... , Vn-1};
(2)将部分数组元素初始化为0
/* s < N ,未指定初始值的元素默认为0*/
type Name [N] = {V0, V1, ... , Vs};
(3)将全部元素初始化为0
type Name [N] = {0};
2.数组的内存分布
数组在计算机底层是一片连续的内存,用于储存数组元素
—数组的大小字节数可以用sizeof()获取(单位为字节)
计算数组大小
type Name [] = {V0, V1, ... , Vn-1}; // 一共n个元素
sizeof(Name)/ sizeof( Name[0] ); // 计算结果为n
注意:
1.数字名只能作左值使用(可以看作常量)
2.只能使用整型常量对数组大小进行定义
3.只能使用整型值对下标访问数组元素
int size; //初始值多少?
int arr[size]; //数组大小多少?
int a[5] = {0};
arr[1.5] = 1; //第1.5个变量是哪个
arr = a; //常量不能作左值