#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
char s[2][5]={"12345","12345"};
for(i=0;i<2;i++)
{
printf("%s\n",s[i]);
}
return 0;
}
为什么运行是这样的不应该是12345 吗
12345

c语言二维数组初始化问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
9条回答 默认 最新
- threenewbee 2017-11-06 03:50关注
为什么一维字符数组的时候或者普通数组等于长度就可以正常输出
因为数组后面的内存是0,起到了截止字符串的作用。其实还是越界了,只是没有造成严重的后果。
但是二维数组,后面的空间正好你又存入另一个12345了,没有0了,错误就暴露出来了。好比你开车,如果开到马路外面,人行道上没有车,那么表面上看没事,但是你这么开有隐患。
但是如果马路上正好有人,那么就撞到人了。所以不是人行道的人错了,而是你这么开车就不对。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
- ¥15 要求编写稀疏矩阵A的转置矩阵的算法
- ¥15 编写满足以下要求的停车场管理程序,设停车场只有一个可停放n辆车的狭窄通道且只有一个大门可供车辆进出。
- ¥20 powerbulider 导入excel文件,显示不完整
- ¥15 用keil调试程序保证结果进行led相关闪烁
- ¥15 paddle训练自己的数据loss降不下去
- ¥20 用matlab的pdetool解决以下三个问题
- ¥15 单个福来轮的平衡与侧向滑动是如何做到的?
- ¥15 嵌入式Linux固件,能直接告诉我crc32校验的区域在哪不,内核的校验我已经找到了,uboot没有
- ¥20 h3c静态路要求有详细过程