学习目标:
嵌入式开发–C语言基础6
学习内容:
1.二维数组
2.字符型数组
学习时间:
2024年4月23日
学习产出:
1.二维数组
1.1数组的定义:
数据类型 数组名[行数][列数];
数据类型 数组名[第一维大小][第二维大小];
1.2数组元素的访问
数组名[行下标][列下标]
行下标、列下表:常量或者变量或者表达式
1.3二维数组初始化
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};
int a[2][3] = {{1, 2}, {3}};
int a[2][3] = {0};
int a[2][3] = {{0}};
3.默认初始化:
int a[][3] = {1, 2, 3, 4, 5, 6};
int a[][3] = {1, 2, 3, 4};
int a[][3] = {1, 2, 3};
int a[][3] = {{1, 2}, {3}};
注意:
行能省略,列不能省略
1.4二维数组的存储:
连续性:数组存放的空间是连续的
有序性:数组存放的顺序有序
int a[2][3];
数组占24个字节连续空间
二维数组:由一维数组构成的一维数组
可推得:
N维数组可以理解为由N-1维数组构成的一维数组
2.字符型数组:
2.1 字符型数组定义:
char 数组名[元素个数];
注意:
1.元素个数必须为常量或常量表达式
2.元素大小必须能存放下字符串和末尾的\0字符
字符型数组和字符串的区别:
字符串:一定包含最末尾的\0字符
字符型数组:一组字符的集合,最末尾不需要一定是\0字符
2.2字符串的输入输出:
输出:
1.printf("%s\n", str);
2.puts(str);
输入:
1.scanf("%s", str);
2.gets(str);
scanf只能接收不带' '的字符串
gets可以接收带' '的字符串
2.3字符型数组的初始化:
char str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
char str[6] = {"hello"};
char str[6] = "hello";
2.局部初始化:
char str[6] = {'h', 'e', 'l', '\0'};
char str[6] = {0};
char str[6] = {"hel"};
char str[6] = "hel";
0 -> '\0'
48 -> '0'
3.默认初始化:
char str[] = {"hello"};
char str[] = "hello";
char str[] = {'h', 'e', 'l', 'l', 'o', '\0'};
初始化 != 赋值
2.4字符型数组的存储:
char str[32];
字符型数组所占空间大小: 元素个数
字符串的长度: 从字符串开头到\0中间元素的个数(不包含\0)
2.5获得字符串的长度:
strlen
2.6字符串的拷贝:
strcpy(str, “hello world”);
将字符串hello world\0拷贝到str数组中
2.7字符串拼接:
strcat(str1, str2);
注意:
目的空间必须能够存放下拼接后的字符串
2.8字符串比较:
strcmp(str1, str2);
返回0:两个字符串相同
返回>0:第一个字符串 > 第二个字符串
返回<0:第一个字符串 < 第二个字符串
2.9字符型二维数组:
存储字符串数组
2.9.1定义
char str[第一维大小][第二维大小];
2.9.2初始化
局部初始化:
char str[5][32] = {{"hello"}, {"world"}, {"how"}, {"are"}, {"you"}};
char str[5][32] = {"hello", "world", "how", "are", "you"};