Linux学习笔记(八):C语言一维字符数组

📅 2026/7/29 4:56:32
Linux学习笔记(八):C语言一维字符数组
一、一维字符型数组1. 字符数组的概念在C语言中字符数组就是用于存储字符的一维数组。例如char name[10];表示定义一个字符数组可以存储10个字符。数组中的每个元素都是char类型。例如char str[5];内存结构str ↓ --------------- | | | | | | --------------- 0 1 2 3 4每个位置可以保存一个字符。二、字符数组初始化字符数组初始化有多种方式。1. 使用字符逐个初始化例如char str[5]{h,e,l,l,o};数组内容h e l l o对应str[0]h str[1]e str[2]l str[3]l str[4]o2. 使用字符串初始化C语言中可以直接使用字符串初始化字符数组。例如char str[]hello;编译器会自动计算数组长度。实际上char str[]hello;等价于char str[6]{h,e,l,l,o,\0};注意最后多出了一个\0三、字符串结束标志 \01. 什么是字符串在C语言中字符串是以\0结尾的字符数组。例如char str[]hello;内存h e l l o \0其中\0表示字符串结束。2. 为什么需要\0例如char str[5]{h,e,l,l,o};虽然保存了hello。但是C语言不知道字符串在哪里结束。而char str[6]{h,e,l,l,o,\0};表示hello结束因此\0是C语言判断字符串结束的重要标志。四、字符数组的输入输出1. 使用循环输入字符例如输入5个字符#includestdio.h int main() { char str[5]; int i; for(i0;i5;i) { scanf(%c,str[i]); } return 0; }2. 使用%s输入字符串C语言中scanf(%s,str);可以直接输入字符串。例如#includestdio.h int main() { char name[20]; scanf(%s,name); printf(%s,name); return 0; }输入Tom输出Tom注意使用scanf(%s)输入字符串时遇到空格会结束不能输入带空格的字符串。例如输入hello world只能读取hello五、字符数组常用函数C语言提供了字符串处理函数需要包含#includestring.h1. strlen() 求字符串长度功能计算字符串有效字符数量。例如#includestdio.h #includestring.h int main() { char str[]hello; printf(%d,strlen(str)); return 0; }输出5注意strlen不会计算\02. strcpy() 字符串复制格式strcpy(目标字符串,源字符串);例如char a[20]; char b[]hello; strcpy(a,b);执行后ahello3. strcat() 字符串连接功能将两个字符串连接。例如char a[20]hello; char b[]world; strcat(a,b);结果helloworld4. strcmp() 字符串比较格式strcmp(str1,str2);返回值0相等大于0str1大小于0str1小例如strcmp(abc,abc)结果0六、二维整型数组1. 二维数组概念前面学习的一维数组类似一排数据例如1 2 3 4二维数组类似表格例如1 2 3 4 5 6 7 8 9二维数组可以表示矩阵表格游戏地图图像数据。七、二维数组定义格式数据类型 数组名[行数][列数];例如int a[3][4];表示3行4列的二维数组。结构列 0 1 2 3 0 □ □ □ □ 1 □ □ □ □ 2 □ □ □ □共有3×412个元素。八、二维数组元素访问访问格式数组名[行][列]例如a[1][2]表示第2行第3列元素。注意数组下标从0开始。例如int a[2][3]; a[0][0]10; a[1][2]20;九、二维数组初始化1. 完全初始化例如int a[2][3] { {1,2,3}, {4,5,6} };表示1 2 3 4 5 62. 省略行数可以省略第一维int a[][3] { {1,2,3}, {4,5,6} };编译器自动计算行数。3. 部分初始化例如int a[2][3]{{1,2}};结果1 2 0 0 0 0没有赋值的位置自动为0。十、二维数组遍历二维数组通常使用双重循环。例如输出二维数组#includestdio.h int main() { int a[2][3] { {1,2,3}, {4,5,6} }; int i,j; for(i0;i2;i) { for(j0;j3;j) { printf(%d ,a[i][j]); } printf(\n); } return 0; }输出1 2 3 4 5 6十一、二维数组应用——矩阵二维数组非常适合表示矩阵。例如A 1 2 3 4可以表示int A[2][2];在图像处理、机器人、人工智能领域二维数组也经常用于表示图像像素地图信息状态空间。