一维字符数组.二维整形数组

📅 2026/7/29 5:12:39 👁️ 阅读次数 📝 编程学习
一维字符数组.二维整形数组

C语言一维字符数组 & 二维整型数组

今天重点学习一维字符数组和二维整型数组,调试字符串拼接踩了一堆坑,把知识点整理记录下来,夯实C语言基础✨

🔹一维字符数组(字符串)

C语言本身没有string字符串类型,字符串本质就是以 \0 结束的一维char字符数组, \0 是字符串结束标志,系统靠它判断字符串到哪里终止,没有结束符输出就会出现随机乱码。

1.初始化两种写法

char str[20] = {"hello"};

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

双引号初始化会自动在末尾补 \0 ;大括号单个字符赋值,必须手动加上 \0 。

2.输入输出

使用 %s 可以直接对数组整体读写,不需要循环逐个字符。

⚠gets函数已经被废弃,尽量使用fgets;fgets有大坑:会把按下回车产生的 \n 换行符一并读到数组内部。做字符串拼接、字符串比较的时候,换行符会藏在字符串中间,导致代码逻辑看起来完全失效,需要手动把 \n 替换成 \0 。

3.手写字符串拼接(不使用strcat库函数)

逻辑:先用while循环遍历,找到第一个字符串 \0 所在下标(字符串末尾),从这个位置开始,把第二个数组的字符逐个复制过来,全部复制完成后,一定要手动追加 \0 。

自己写代码的时候犯过错:直接从数组下标0开始复制,把原本的字符串全部覆盖,拼接直接失败,调试很久才定位到问题。

🔹二维整型数组

二维整型数组可以类比一张表格, int arr[行][列] ,本质是数组里面存放一维数组。

1.初始化方式

①全部赋值: int arr[3][2]={{1,2},{3,4},{5,6}};

②简写赋值: int arr[3][2]={1,2,3,4,5,6};

③部分初始化:没有赋值的元素系统自动默认补0。

行下标可以省略,列下标绝对不能省略。

2.元素访问

格式: arr[i][j] ,i代表行下标,j代表列下标;下标全部从0开始计数。

比如3行2列数组,行取值0~2,列取值0~1,访问超出范围下标,数组越界,程序会异常。

3.遍历输出

必须两层循环嵌套:外层循环控制行,内层循环控制列。

plaintext

for(int i=0;i<3;i++) //遍历每一行

{

for(int j=0;j<2;j++) //遍历当前行每一列

{

printf("%d ",arr[i][j]);

}

printf("\n");

}

💡今日踩坑总结

1.字符数组千万留意 \0 结束符,漏掉直接乱码

2.fgets读取回车换行符是隐藏陷阱

3.字符串拼接不能从数组开头拷贝,要跳到原有字符串末尾

4.二维数组列下标不可省略,下标从0开始,警惕数组越界

数组是C语言非常核心的部分,很多底层操作都离不开,还要多加练习