Linux学习笔记(八):C语言一维字符数组
2026/7/29 4:56:24 网站建设 项目流程

一、一维字符型数组

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]='o'

2. 使用字符串初始化

C语言中可以直接使用字符串初始化字符数组。

例如:

char str[]="hello";

编译器会自动计算数组长度。

实际上:

char str[]="hello";

等价于:

char str[6]={'h','e','l','l','o','\0'};

注意:

最后多出了一个:

'\0'

三、字符串结束标志 '\0'

1. 什么是字符串?

在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个字符:

#include<stdio.h> int main() { char str[5]; int i; for(i=0;i<5;i++) { scanf("%c",&str[i]); } return 0; }

2. 使用%s输入字符串

C语言中:

scanf("%s",str);

可以直接输入字符串。

例如:

#include<stdio.h> int main() { char name[20]; scanf("%s",name); printf("%s",name); return 0; }

输入:

Tom

输出:

Tom

注意:

使用scanf("%s")输入字符串时:

  • 遇到空格会结束;
  • 不能输入带空格的字符串。

例如:

输入:

hello world

只能读取:

hello

五、字符数组常用函数

C语言提供了字符串处理函数,需要包含:

#include<string.h>

1. strlen() 求字符串长度

功能:

计算字符串有效字符数量。

例如:

#include<stdio.h> #include<string.h> int main() { char str[]="hello"; printf("%d",strlen(str)); return 0; }

输出:

5

注意:

strlen不会计算:

'\0'

2. strcpy() 字符串复制

格式:

strcpy(目标字符串,源字符串);

例如:

char a[20]; char b[]="hello"; strcpy(a,b);

执行后:

a="hello"

3. strcat() 字符串连接

功能:

将两个字符串连接。

例如:

char a[20]="hello"; char b[]="world"; strcat(a,b);

结果:

helloworld

4. strcmp() 字符串比较

格式:

strcmp(str1,str2);

返回值:

  • 0:相等
  • 大于0:str1大
  • 小于0:str1小

例如:

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×4=12

个元素。


八、二维数组元素访问

访问格式:

数组名[行][列]

例如:

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 6

2. 省略行数

可以省略第一维:

int a[][3]= { {1,2,3}, {4,5,6} };

编译器自动计算行数。


3. 部分初始化

例如:

int a[2][3]={{1,2}};

结果:

1 2 0 0 0 0

没有赋值的位置自动为0。


十、二维数组遍历

二维数组通常使用双重循环。

例如:

输出二维数组:

#include<stdio.h> int main() { int a[2][3]= { {1,2,3}, {4,5,6} }; int i,j; for(i=0;i<2;i++) { for(j=0;j<3;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];

在图像处理、机器人、人工智能领域:

二维数组也经常用于表示:

  • 图像像素;
  • 地图信息;
  • 状态空间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询