数组:连续开辟的空间;
一维数组:<存储类型> <数据类型> <数组名> 【数组长度】
存储类型:auto、register、static、extern
数组名:这个数组的首地址,常量,不可更改;
多维数组:int a[10][7] :10是行(可省略),7是列
在内存中依然是连续存储;
元素个数=行*列;
可以看作是多个一维数组组成;
printf(a[%d]=%p) //输出地址,测试空间是否连续;
段错误:越界,也叫非法访问内存;
数组的初始化必须单个赋值;
数组打印也必须单个打印;
数组容易存在越界问题,所以使用数组要小心;
字符数组:
char a[10]={0}; 初始化为空;
字符串的初始化方式:
char a[10]={"hello"}
char a[10]="hello" //%c
char a[10]={'h','e','l','l','o'} //%s
a[]={"hello"} //puts(),5+\0=6(占了6个字节),结尾默认添加\0,自动添加长度;
sizeof(b)/sizeof(b[0]) :计算字节数;
二维数组:
char ch[3][6]=ch[][6]={{"hello"},{"abcde"},{"quwdb"}}
字符串的输入输出
for() {printf ("%c",a[i]);} //循环,%c打印;
printf("%s",a); //a是指首地址,用%s打印,后面必须是地址类型;
puts(a) //会自动换行;
输入:sanf("%s",a) //空白字符自动结束;
gets(a) //回车才结束;
sizeof(a)=%d //求的是a的空间长度,包括\0;
strlen(a)=%d //只显示字符个数,\0不会再显示长度;
字符串函数:
strlen 求字符串长度;字符串遇\0结束;
strcat 字符串连接函数
返回值:返回的是a的首地址;
strcat (a,b); //会自动去除字符数组a中的”\0“,将b连在a后;
strcpy 复制函数,将b复制到a,连同\0一起复制;
strcmp 比较函数,返回值>1 ==0 <-1,比较时从左往右比较;