1.数组是一组有序数据的集合,数组中的每一个元素都属于同一个数据类型。
定义一维数组的一般形式是:类型符 数组名[常量表达式]
说明(1)数组名的命名规则和变量名相同,遵循标识符命名规则,(2)指定a[10],表示a数组有10个元素,注意,下标是从0开始,这10个元素是,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。按上面的定义,不存在数组元素a【10】
(3)常量表达式中可以包含常量和符号常量,如:int a[3+5];是合法的,但a[n]是不合法的,因为n是变量。
(4)如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。
2.在调用func函数时,形参n从实参得到值,这种情况称为“可变长数组”,允许在每次调用func函数时,n有不同的值,但在执行函数时,n的值是不变的。如果指定数组为静态(static)存储方式,则不能用可变长数组。如:static int a[2*n];
就不合法。
3.只能引用数组元素,而不能一次整体调用整个数组全部元素的值。
4.常在定义数组的同时,给各数组元素赋值,这称为数组的初始化。
5.在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。
6.如果在定义数值型数组时,指定了数组的长度,并对之初始化,凡未被初始化列表指定初始化的数据元素,系统会自动把他们初始化为0(如果是字符型数组,则初始化为’\0’,如果是指针型数组,则初始化为NULL,即空指针)。
7.C语言中,二维数组中元素排列的顺序是按行存放的。
8.注意用矩阵形式即3行4列形式表示二维数组,是逻辑上的概念,能形象的表示出行列关系,而在内存中,各元素是连续存放的,不是二维的,是线性的。
9.字符型数据是以字符的ASCII代码存储在存储单元中,一般占一个字节。
10.C语言中没有字符串类型,字符串是存放在字符型数组中的。
11.’\0’代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个空操作符,即他什么也不做,用它来作为字符串结束标志,不会产生附加的操作或增加有效字符,只起一个供辨别的标志。
12.字符串是用双撇号括起来的,而不是单撇号。
13.char c[]="i am happy";
此时数组c的长度不是10,而是11,因为字符串常量的最后由系统加上一个‘\0’。
14(1)逐个字符输入输出,用格式符“%c”输入或输出一个字符(2)将整个字符串一次输入或输出,用"%s"格式符,意思是对字符串(string)输入和输出。(3)输出的字符中不包括结束符"\0".(4)用"%s"格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名.(5)如果数组长度大于字符串实际长度,也只输出到遇’\0’结束。(6)如果一个字符数组中包含一个以上’\0’,则遇第一个’\0’时输出就结束。(7)可以用scanf函数输入一个字符串。(7)scanf函数中的输入项如果是字符数组名,不要再加地址符,因为在C语言中数组名代表该数组的起始地址。
15.puts函数----输出字符串的函数,用puts函数输出的字符串中可以包含转义字符,
例如:char str[]={"China\nBeiJing"}; puts(str);
输出China
Beijing
16.gets函数—输入字符串的函数。例如:输入字符串"Computer"送给数组共9个字符,而不是8个字符,注意用puts和gets函数只能输出或输入一个字符串,不能写成puts(str1,str2);
连接前两个字符串的后面都有‘\0’,连接时将字符串1后面的’\0’取消,只有在新串最后保留’\0’。连接两个字符串时字符串数组1必须写成数组名形式(如str1),字符串2可以是字符数组名,也可以是一个字符串常量。不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。例如:str1="China"; str1=str2;
17.字符串比较规则是:将两个字符串自左至右逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止。
18.strlen函数—测字符串长度的函数,函数值为字符串中的实际长度(不包括’\0’在内)。
19.在字符串处理函数时,应当在程序文件的开头用#include <string.h>
.