baidu_24707273
这个昵称有点冷
2020-06-13 16:45
采纳率: 100%
浏览 205

C语言定义字符串数组,数组长度是预期长度的两倍

C语言定义字符串数组问题,使用大括号定义的数组长度是预期长度的两倍

char x[]="abcdefg";
    char y[]={'h','i','j','k','l','m','n'};

    int xl = strlen(x),yl = strlen(y);
    int i=0;
    //printf("%s",x[i]);

    puts(x);
    puts(y);
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • fengqiao1999
    fengqiao1999 2020-06-13 17:03
    已采纳

    你看到的只是一个假象, strlen是用来计算字符串的, 你初始化时没有知道字符串结束符,计算出来的结果自然是错误的。
    char y[]={'h','i','j','k','l','m','n', 0};

    点赞 评论
  • caozhy

    字符串必须0结束,并且strlen是字符串的长度,不是字符串数组的长度,后者用sizeof来得到。

    点赞 评论

相关推荐