数组
数据类型 数组名称[长度];
获取数组元素:数组名称[元素所对应下标];
数组的下标均以0开始; 数组在初始化的时候,数组内元素的个数不能大于声明的数组长度;
初始化数组时元素个数小于数组的长度时,多余的数组元素初始化为0;
在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。
数组的遍历
数组就可以采用循环的方式将每个元素遍历出。
避免出现数组越界访问,循环变量最好不要超出数组的长度。
C语言的数组长度一经声明,长度就是固定,无法改变,C语言并不提供计算数组长度的方法。
由于C语言是没有检查数组长度改变或者数组越界的这个机制,可能会在编辑器中编译并通过,但是结果未知。c语言获取数组长度: int length = sizeof(arr)/sizeof(arr[0]);
数组作为函数参数
数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数:
整个数组当作函数参数,即把数组名称传入函数中。
数组中的元素当作函数参数,即把数组中的参数传入函数中。
字符串与数组
C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。
一般有以下两种格式:
char 字符串名称[长度] = “字符串值”;
char 字符串名称[长度] = {‘字符1’,‘字符2’,…,‘字符n’,’\0’};
[]中的长度是可以省略不写的;
采用第2种方式的时候最后一个元素必须是’\0’,’\0’表示字符串的结束标志; 采用第2种方式的时候在数组中不能写中文。
在输出字符串的时候要使用:printf(“%s”,字符数组名字);或者puts(字符数组名字);。
字符串函数
常用的字符串函数
strlen()获取字符串的长度,在字符串长度中是不包括‘\0’,而且汉字和字母的长度是不一样的。
GBK编码,一个汉字占两个字节。
UTF-16编码,通常汉字占两个字节,CJKV扩展B区、扩展C区、扩展D区中的汉字占四个字节(一般字符的Unicode范围是U+0000至U+FFFF,而这些扩展部分的范围大于U+20000,因而要用两个UTF-16)。UTF-8编码是变长编码,通常汉字占三个字节,扩展B区以后的汉字占四个字节。
strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小。
strcpy()拷贝之后会覆盖原来字符串且不能对字符串常量进行拷贝。
strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串。
atoi(s)函数用于把一个字符串转换成一个整型数据,该函数定义在stdlib.h中。
多维数组
数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n];
二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。
多维数组的遍历
多维数组也是存在遍历的,和一维数组遍历一样,也是需要用到循环。多维数组需要采用嵌套循环。多维数组的每一维下标均不能越界。