数组:是一块连续且同类型的存储空间。
定义数组:
类型 数组[长度];
整型数组:
int/short/long 数组名[长度];
注意: int buf[10]={1,2,3,4,5,6};
sizeof(buf)/sizeof(int)==10 是不确定元素的个数的
字符数组:
定义: char buf[长度];
初始化:在定义同时赋初值
char buf[10]={‘a’,‘b’,‘c’};
char buf[]="lifei";在内存中等于 char buf[]={'l','i','f','e','i','\0'};
规定:在字符数组中用’\0’/null作为结束字符
字符串常量: “多个字符”
注:字符串常量的末尾时会自带'\0',系统函数或%s打印时,遇到字符串的\0时结束
buf[]="li\0fei";输出字符串的时候只输出 li
字符串系统函数:string.h(需要加库)
unsigned int strlen(const char*); 求字符串元素的个数(不包含\0)
注:在笔试中如下题目: sizeof(buf) /strlen(buf)
字符串拷贝函数:
strcpy(des,src); src的字符串拷贝给des
strncpy(des,src,n); 将src的前n个字符拷贝给des
字符串比较:
int strcmp(str1,str2)
int strncmp(str1,str2,n)
返回值
str1>str2 >0
str1=str2 =0
str1<str2 <0
注:比较字符串是通过词典序列来比较(z>a,即wozd>world)
二维数组与多维数组:
1、定义二维数组:类型 数组名[行][列]
1.元素的个数:行*列 空间长度:行*列*sizeof(类型)
2.在逻辑结构是二维数组,在物理结构是线性结构
buf[5][5]={{1,2,3,4,5},{1,2,3,4,5},...};
其中buf[0][5]=buf[1][0];物理结构没有越界,但是逻辑结构已经越界
2、初始化:在定义数组同时赋初值
类型 数组名[行][列]={{…},{…},{…},…}
注:若每行初始化部分时,其他元素值为0
char buf[5][5];
其中,buf是整个数组的首地址,buf[0]是第一行的首地址
3、引用元素:下标法
数组名[行][列] 行列下标都是从0开始
eg: 第三行的第二列元素:数组名[2][1]
练习:
1、实现求长度过程
2、实现拷贝过程()
3、实现比较过程
4、实现查找字符串:存在(说明该子字符串的首位置),不存在
char buf[]=“hello,my name is lifei;I have a friend…”
char buf1[]="lifei"是否存在
5、int buf[3][5]={…};
1、打印第2列的所有元素
2、遍历输出所有元素(每一行换行)
6、有一个如下二维数组:
int score[4][5]={{78,79,67,89,100},{},{},{},{}}; (每一行代表一个班级)
1.求该年级最高分
2.求每个班最高分
3、求每个班的平均分
4、该年级平均分
5、该年级不及格人数
7、有一个如下二维数组:
int buf[5][5]={…};
判断该数组元素是否是斜对角对称。