5.1一维数组

5.1.1一维数组的定义

定义:所谓一维数组是指只有一个下标的数组。它在计算机的内存中是连续存储的。
一般形式:
<存储类型> <数据类型> <标识符>[表达式]; (赋初值)
注意:
1))[ ] :数组运算符单目运算符优先级(1)左结合不能用( );
2)表达式:数组个数,不能为变量。从0开始;
3)标识符即数组名。

1>代表整个数组,数组名表示内存首地址,是地址常量。
2>是一个常量。

4)分配的空间是连续;编译时分配连续内存;内存字节数=数组维数*;sizeof(元素数据类型)。
5)C语言对数组越界不做检查。需要自己避免;

5.1.2一维数组的引用

说明:
1)数组必须先定义,后使用;
2)只能逐个引用数组元素,不能一次引用整个数组;
3)数组元素表示形式: 数组名[下标]。
其中:下标可以是常量或整型表达式。

5.1.3一维数组的初始化

说明:
1)数组不初始化,其元素值为随机数;
2)对static数组元素不赋初值,系统会自动赋以0值;
3)只给部分数组元素赋初值;
4)当全部数组元素赋初值时,可不指定数组长度。
注意:在定义数组时,为数组元素赋初值。(在编译阶段使之得到初值)
int a[3]; //局部变量 不初始化都是随机值
int a[3]={1,2,4}; //全部赋初值
int a[3]={1,2};// 部分初始化,未赋值的为0
int a[] ={1,2,4};//可以不指定数组的长度,根据赋值情况确定。

5.2 二维数组

5.2.1二维数组的定义

定义:
<存储类型> <数据类型> <标识符>[表达式1][表达式2]
表达式1:行数
表达式2:列数
注意:
1)在内存中,一行一行的存储。
2)第一维的长度,可以省略。

5.2.2二维数组的引用

形式: 数组名[下标][下标]

5.2.3二维数组的初始化

int a[2][3] ={1,2,3,4,5,6};  //全部赋值
int a[2][3] ={{0,2,0},{1,0,0}};//一行一行的赋值

5.3 字符数组

定义:
字符数组是元素的数据类型为字符类型的数组,它既具有普通数组的一般性质,又具有某些特殊性质。
初始化:
1)逐个字符赋值
2)用字符串常量
char buf[5]={‘h’,‘e’,‘l’,‘l’,‘o’};
char buf[5]=“hello”; //出现越界了。
char buf[6]=“hello”;
char buf[6]={“hello”};

注意:
1)存的一堆的字符
2)字符串以’\0’作为结束符,所以可以用%s 一次性打印字符数组
3)"%c" //打印一个字符
4)定义的字符数组是局部变量,注意先把这片空间清零再来使用。
5)使用memset(buf,0,sizeof(buf)) ,把这片空间清零。