一维数组:
定义方式 : 数据类型 数组名[常量表达式]; 例如: int a[10] float b[10] char c[10]
数组名表示内存首地址,是地址常量
编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型)
初始化:int a[5]={1,2,3,4,5};
int a[]={1,2,3,4,5,6}; 编译系统根据初值个数确定数组维数
数组不初始化,其元素值为随机数
初值个数不能多于数组长度
当全部数组元素赋初值时,可不指定数组长度
引用:数组必须先定义,后使用
只能逐个引用数组元素,不能一次引用整个数组
二维数组:
初始化:(1) 直接分行给二维数组赋初值。
如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2) 可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。
如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3) 可以对部分元素赋初值。
如: int a[3][4]={{1},{5},{9}};
(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
int a[3][4]= {1,2,3,4,5,6,7,8,9,10,11,12};
它等价于:
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
字符数组:
字符数组的初始化:
逐个字符赋值 char ch[3] = {‘b’, ‘o’, ‘y’};
用字符串常量 char ch[4] = “boy”;
字符串及其结束标志
无字符串变量,用字符数组处理字符串
字符串结束标志:‘\0’
例如: “hello” 共5个字符,在内存占6个字节 字符串长度5
字符数组的输入/输出
逐个字符I/O: %c
整个字符串I/O: %s(遇到 ‘\0’ 则会结束输出)
字符串函数
gets
格式:gets(字符数组)—建议用fgets( )
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’
puts
格式:puts(字符数组)
功能:向显示器输出字符串 (输出完字符串后,再输出一个换行符)
说明:字符数组必须以‘\0’结束
字符串处理函数:
strcat
格式:strcat(字符数组1,字符数组2)
功能:把字符数组2连到字符数组1后面
返值:返回字符数组1的首地址
说明:字符数组1必须足够大;连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’
strcpy
格式:strcpy(字符数组1,字符串2)
功能:将字符串2,拷贝到字符数组1中去
返值:返回字符数组1的首地址
说明:字符数组1必须足够大 拷贝时‘\0’一同拷贝 不能使用赋值语句为一个字符数组赋值
strcmp
格式:strcmp(字符串1,字符串2)
功能:比较两个字符串
比较规则:对两串从左向右逐个字符比较(ASCII码),
直到遇到不同字符或‘\0’为止
返值:返回int型整数,a. 若字符串1< 字符串2, 返回负整数
b. 若字符串1> 字符串2, 返回正整数
c. 若字符串1== 字符串2, 返回零
说明:字符串比较不能用“==”,必须用strcmp
strlen
格式:strlen(字符数组)
功能:计算字符串长度
返值:返回字符串实际长度,不包括‘\0’在内
strncpy
格式:stencpy(buf,‘123456’,4) 只拷贝’1234’
strncmp
格式:strncmp(buf,buf2,3) 只比较buf和buf2的前三位
strncat
格式:strncat(buf,buf2,4) 只会把buf2的前四位相连
strcasecmp
格式strcasecmp(buf,buf2) 不区分大小写的判断
memset
格式:memset(buf,0,sizeof(buf)) 用于清零 memset(数组首地址,0,数组字节长度)
memcpy
格式:memcpy(需要复制的数组,被复制的数组,sizeof(被复制的数组))memcpy(b,a,sizeof(a))
memcmp
格式:memcmp(a,b,sizeof(a)) 一样就返回0 前面大就返回1 后面打就返回-1
sprintf 将其他格式转化成字符串
格式:sprintf(结果字符数组," 格式",输出数组);