一、一维字符型数组
数据类型 数组名[数组长度];
(1)从数组角度:一维字符型数组是用来放字符串的
char s[20] = {'a','b','c','d'}; //未初始化的部分为0
(2)从字符串的角度:
char s[20] = {"hello"}; //{}也可以省略,实际占用空间包含了 '\0' 。
注意:
①字符串是被当作字符数组来处理的。(连续性、有序性、单一性)
②字符串有一个专门的结束标志 '\0'。
③如果处理的是字符串,操作的时候,往往以 结束标志 为 操作依据 。
④如果处理的是数组,操作的时候,往往以 数组长度 作为操作依据 。
⑤字符数组可以用来存储字符串,而字符串在内存中存储的方式也是以字符数组形式存储的 。
1.puts函数
int puts(const char *s);
(1)功能: 输出一个字符串
(2)参数: s -----表示字符串为指针类型 ,字符数组名为s
(3)返回值: 成功---非负数
失败--- -1
注意:puts输出时自动会加换行。
2. gets 函数
char *gets(char *s);
(1)功能: 从键盘获得一个字符串
(2)参数: s -----代表就是一块存储空间,需要的是一个一维字符型数组的数组名
(3)返回值: 成功--- s
失败--- NULL
注意:使用gets1函数时很容易越界,且无提示。
3.strlen 函数
字符串长度 -----'\0' 前面的字符个数
size_t strlen(const char *s); //头文件 <string.h>
(1)功能: 计算字符串长度
(2)参数: s -----表示需要一个指针,可以给的参数形式有 数组名 或 字符串常量 。
(3)返回值: 返回字符串长度
注意:字符串不能操作,数组不能整体赋值 。
例如:
char s1[10];
gets(s1);
char s2[10];
s2 = s1;(×)
4.strcpy 函数
char * strcpy(char *dest, const char *src); //头文件 <string.h>
(1)功能: 复制字符串,将src中字符串,复制到dest。
(2)参数: src ------表示原字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量
dest -----表示目的字符串,可以给的实参形式:一维字符数组名
5.strcat 函数
char *strcat(char *dest, const char *src); //头文件 <string.h>
(1)功能: 拼接字符串
(2)参数: src ------表示原字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量
dest -----表示目的字符串,可以给的实参形式:一维字符数组名
6.strcmp 函数
int strcmp(const char *s1, const char *s2);
(1)功能: 比较字符串大小
(2)参数: s1 ------字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量
s2 -----字符串,可以给的实参形式:a.一维字符数组名 b.字符串常量
(3)返回值:最后停的位置上字符的ASCII码的差值来反映大小
①s1 > s2 ------ ret > 0
②s1 == s2 ----- ret = 0
③s1 < s2 ----- ret < 0
注意:比较结束的条件:s1[i] != s2[i] || s1[i] == '\0' || s2[i] == '\0'
二、二维数组
类型说明符 数组名[常量表达式][常量表达式]
(1) (2) (3) (4)
(1) 类型说明符 --- 用来说明数组中存储数据的类型
(2) 数组名 --- 标识符
(3) 常量表达式 --- 行 --多少行
(4) 常量表达式 --- 列 --多少列
1.数组初始化:
(1)全部初始化 :
eg: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//全部初始化
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};//全部初始化
(2)部分初始化:(未初始化部分为0)
eg:int a[3][4] = {1,2,3,4,5,6};//部分初始化
int a[3][4] = {{1,2},{5,6},{9,10}};//部分初始化
(3)赋值: scanf输入值
2.数组元素的引用:
数组名 [行][列];
3.二维数组的本质:
int[4] a[3]; // 一维数组
// 这个一维数组的元素 又一个一维数组类型//int[4] a[3]; --------c语言不支持这样写
int a[3][4]; //二维数组
注意:
①在c语言中,并不存在真正的二维数组,都是用一维数组模拟的。
②二维数组的本质上是 一维数组类型的一维数组。------数组的数组
③二维数组数据存储时,按行优先存储 。
4.多维数组
(1)eg:
int a[3][4][5]; //三维数组 --- 是二维数组类型的一维数组
int[4][5] a[3] //n维数组 --- n-1维数组类型的 一维数组
(2)用途:处理一些图片数据;存放多行数据等。