一、二维数组
#定义
数据类型 数组名[行数][列数];
#元素的访问
数组名[行下标][列下标]
#数组的初始化
1. 全部初始化:
int a[2][3] = {1, 2, 3, 4, 5, 6};
int a[2][3] = {{1,2,3},{4,5,6}};
2. 局部初始化:
int a[2][3] = {1, 2, 3, 4};
int a[2][3] = {{1,2},{3}};未给定初值的元素为0值;
3. 默认初始化:
int a[][3] = {1, 2, 3, 4, 5, 6};
int a[][3] = {1, 2, 3, 4}; 行可以省略,列不能省略;
4. 二维数组的存储:
连续性:数组存放的空间连续;
有序性:存放顺序有序;
int a[2][3],共6个元素,占据24字节的空间;
二、字符型数组
#定义
char 数组名[元素个数];
1. 元素个数大小必须能存放下字符串和末尾的‘\0’字符;
2. 要存“hello”就至少要有6个元素,少于6个就会越界;
#字符型数组和字符串的区别
1. 字符串:一定包含末尾的'\0'字符;
2. 字符型数组:一组字符的集合,最末尾不需要一定是‘\0’字符;
#字符串的输入输出
输出:
1. printf("%s\n", str);
( %s 会打印从第一个字符开始到最近的\0字符结束;若没有'\0'字符会越界打印。)
2. puts(str);
输入:
1. scanf("%s", str);
scanf只能接收不带‘ ’的字符串;
2. gets(str);
接收所有字符串后额外接收一个‘\0’字符;
#字符型数组的初始化:
1. 全部初始化:
char str[4] = {'h','g','i','\0'};
char str[4] = {"hgi"};
2. 局部初始化:
char str[4] = {'h','g','\0'};
char str[4] = {0}; -------清零;
0 -> '\0';
48 -> '0'
3. 默认初始化:
char str[] = {"hello"};
char str[] = "hello";
#获得字符串长度:strlen
strlen ---- 给定一个字符串获得其长度;
#字符串的拷贝: char str[32];
strcpy(str, "hello world"); ----将字符串“hello world\0”拷贝到str数组中;
#字符串拼接:
char str[32] = {"hello"};
char dst[32] = {"welcome"};
strcat(str, "!"); ----将‘!’拼到str后;
strcat(dst, "~");
#字符串的比较:
char str[32] = {"hello"};
char dst[32] = {"welcome"};
strcmp(str, dst); --- 比较两个字符串
返回值 = 0:两个字符串相同;
返回值 > 0:第一个 > 第二个;
返回值 < 0:第一个 < 第二个;
两个字符串从左至右依次,比较第一个不相同的字符对应的ASCII码,ASCII码大的对应的字符串大。
三、字符型二维数组
1. 定义: char str[第一维][第二维]; char str[5][32];
2. 初始化:
1. 局部初始化:
char str[5][32] = {{"halo"},{"how"},{"are"}};
char str[5][32] = {"hello", "how", "are"};
3. 字符串的遍历:
char str[32] = {"hello"};
int i = 0;
while(str[i] != '\0')
{
str[i];
i++;
}