C语言 学习 数组(一维数组,多维数组,字符数组,字符串) 2025年6月8日09:21:39
一维数组
int arr[5];//声明整型数组长度5
int arr[5]={1,2,3,4,5};//静态初始化//动态(运行时赋值)初始化
for(int i=0;i<5;i++)
{
arr[i]=i+1;
}//运行过程
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
- 数组下标不能越界(否则行为未定义)
- 数组名
arr
可以看作指向首元素的指针
多维数组
int arr[行][列];//静态初始化
int arr[2][3]={
{1,2,3},
{4,5,6}
};//动态初始化
for(int x=0;x<2;x++)
{
for(int y=0;y<3;y++)
{
arr[x][y]=x*3+y+1;
}}
//运行效果
第一层循环:x = 0(第一行)
y = 0: arr[0][0] = 0*3 + 0 + 1 = 1
y = 1: arr[0][1] = 0*3 + 1 + 1 = 2
y = 2: arr[0][2] = 0*3 + 2 + 1 = 3
第一层循环:x = 1(第二行)
y = 0: arr[1][0] = 1*3 + 0 + 1 = 4
y = 1: arr[1][1] = 1*3 + 1 + 1 = 5
y = 2: arr[1][2] = 1*3 + 2 + 1 = 6
- 多维数组本质上是一维数组的嵌套
- 不推荐使用超过三维以上的数组(可读性差)
三维数组
int arr[2][3][4];
int arr[二维数组数量][行][列];int arr[2][3][4]=
{{
{1,2,3,4},{5,6,7,8},
{9,10,11,12}},{{1,2,3,4},{5,6,7,8},
{9,10,11,12}}};Layer 0:1 2 3 45 6 7 89 10 11 12Layer 1:1 2 3 45 6 7 89 10 11 12
字符数组
char arr[5];
char arr[5]={'H', 'e', 'l', 'l', 'o'}; //静态初始化
//自动初始化
char str[6]="Hello";// 自动在尾部添加'\0'
//等同于:
char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
- 字符数组每个元素占 1 字节(
sizeof(char) == 1
)
字符串
C语言中没有专门的字符串类型,而是用 以
\0
结尾的字符数组 表示字符串
必须有'\0'结尾才算!!!! 字符数组不一定是 字符串
使用标准库函数需包含头文件 <string.h>
字符串操作函数:
strlen(str):获取长度
strcpy(dest, src):复制字符串
strcat(dest, src):连接字符串
strcmp(str1, str2):比较字符串