1.数组
一维:类型符 数组名[常量];
a.同一类型数据的集合。
b.只能引用其数组成员,不能引用其本身。
c.数组名不代表整个数组。
d.常量代表元素个数。
e.所有元素以各自下标为顺序,在内存中占有一段连续的存储单元。
f.数组常与循环结构在一起使用。如for(i=0;i<n;i++)
因为以%d输入输出时只能一个一个输,所以要用到循环结构,照顾到每一个元素。
初始化时不够就补0。
g.数组名本身就是数组首元素的地址,a=&a[0],引用数组元素时,首先通过数组名找到该数组的起始地址,再通过元素下标计算出该元素的地址。
h.c语言不对数组做越界检查,即可以把数组储存单元外的内存单元当作这个数组的元素来访问。
二维:类型符 数组名[常量][常量]
a.先行后列
b.行优先,先储存第一行的元素,再储存第二行的元素。
c.二维数组常用两层嵌套的循环结合使用。内层循环完全执行结束,即完成对一行的全部元素的引用。
for(i=0;i<m;i++)
for(j=0;j<n;j++)
d.初始化中不足就补0。
总的来说,一维就是一行数,二维就是好几行数。
2.字符数组
字符数组也分一维,二维。
char 数组名[常量]
char 数组名[常量][常量]
a.初始化 不足就补空字符,多了按语法错误处理,对一维数组可以省略数组长度,不过仅仅应用于定义且赋值时。对二维数组初始化与二维数组初始化一样。
b.重点:用%c来输入输出字符时1,要用循环语句。
一维字符数组用一层循环嵌套。二维字符数组用两层循环嵌套。
重点的重点:循环结构中,通过判断当前元素是否为空字符来判断当前行中有效字符是否已经全部输出,并决定是否结束内嵌的循环结构,就是决定是否换行。前提是定义的数组个数比实际输入的要大,if语句才能派上用场,否则,for语句本身就能限制是否换行,是否输入输出结束。
3.字符串是字符数组,字符数组不一定是字符串。
我觉得用法就是,用字符初始化字符数组和用字符串初始化字符数组。字符初始化时花括号限定且每个初值由单引号限定,逗号隔开。字符串初始时花括号可以省略,用双引号限定整个字符串,并且系统会自动向数组末端添加一个空字符作为结束标志。
4.除了初始化时赋值还可以用%c,%s其中%c的用法已经总结过,所以总结一下%s输入的用法。
输入列表不是数组元素地址而是数组名即数组首元素的地址。
从首元素地址开始,将连续输入的字符一次写入储存单元。重点:当输入tab 空格 回车时,在有效字符后自动添加一个空字符,并结束输入。所以小心空格哦。

5.用%s输出字符数组。
用%s可以一次把整个字符串输入输出。 首先,输出列表不是单个数组元素,而是数组名。直到遇见第一个空字符停止输出。但不输出那个空字符。
6. 上述讲啦初始化赋值两种方式,又讲了%c %s的输入输出方式,还有一种字符串的输入输出函数。
puts函数 gets函数
puts函数:puts(数组名) 将一个字符数组的有效字符输出到终端,遇到空字符结束输出。
gets函数:gets(数组名) 将一个字符串输入字符数组中,以回车键为结束输入的标志将回车转化为空字符输入。注意用gets函数可以输入空格键哦。
数组总结结束。