目录
前言
我们希望能够将很多值存起来,这样就能避免出现要用某一个值便创建某一个变量的麻烦情况,这便需要用到数组了。
一维数组的创建
数组是同类型元素的集合。
注意:
一、在c99标准之前,const_n只能是常量,c99标准支持“变长数组”这个概念,允许使用变量来作为const_n,但变长数组不能在创建时初始化。
二、数组通过下标来访问元素,并且下标从零开始。
type_t arr_name [const_n];
//type_t 是指数组的元素类型
//const_n 是一个常量表达式,用来指定数组的大小
一维数组的初始化
一维数组的初始化是指,在创建该数组时,给数组一些合理的值。
数组的初始化分为完全初始化和不完全初始化两种。
完全初始化
初始化整个数组。
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
不完全初始化
初始化一部分元素
int arr[10] = {1,2,3,4,5};
一维数组的内存
一维数组的内存时连续存放的,并且地址是从低地址向高地址储存,这也是为什么能通过下标访问的原因。
二维数组的创建 和初始化
两个【】分别代表行数和列数,其中行数可以省略,但列数不能省略,这是因为二维数组能根据列数的大小来生成行数。
初始化和一维数组一模一样。
//数组创建
int arr[3][4];
char arr[3][5];
double arr[2][4];
二维数组的使用
和一维数组一样,都是通过下标来访问元素。
二维数组的内存
一样是连续分布的,并且同样是由低地址向高地址分布,可以将二位数组看做是:元素是一维数组的一维数组。
使用数组时要注意的事项
数组越界问题
一、数组的下标是有范围限制的。
二、数组的下规定是从
0
开始的,如果数组有
n
个元素,最后一个元素的下标就是
n-1
。
三、所以数组的下标如果小于
0
,或者大于
n-1
,就是数组越界访问了,超出了数组合法空间的访问。
四、C
语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就 是正确的, 所以程序员写代码时,最好自己做越界的检查。
数组名的问题
数组名就是数组首元素地址,但有两种特殊情况。
一、将数组名作为sizeof()括号中的内容,此时的数组名代表着整个数组。
二、&数组名是,这时取出来的是整个数组的地址,&数组名+1是跳过整个数组,数组名+1是跳过首元素。
总结
介绍了数组的概念,一维数组的创建、一维数组的初始化、一维数组的使用、二位数组的创建、二维数组的初始化、二维数组的使用、使用数组时的注意事项、数组名的含义。