阿阿阿安
2017-11-06 03:06
采纳率: 57.1%
浏览 3.0k
已采纳

c语言二维数组初始化问题

图片说明

#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
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • threenewbee 2017-11-06 03:50
    已采纳

    为什么一维字符数组的时候或者普通数组等于长度就可以正常输出
    因为数组后面的内存是0,起到了截止字符串的作用。其实还是越界了,只是没有造成严重的后果。
    但是二维数组,后面的空间正好你又存入另一个12345了,没有0了,错误就暴露出来了。

    好比你开车,如果开到马路外面,人行道上没有车,那么表面上看没事,但是你这么开有隐患。
    但是如果马路上正好有人,那么就撞到人了。所以不是人行道的人错了,而是你这么开车就不对。

    评论
    解决 无用
    打赏 举报
  • 查看更多回答(8条)

相关推荐 更多相似问题