c++
2015-11-11 08:09
采纳率: 66.7%
浏览 1.5k

关于字符串数组的长度问题

#include
using namespace std;

int main()
{
int length;
char onearray[6] = {'a','d','r','y','b'};
length = strlen(onearray);
cout << "the length of the array is:" << length << endl;
return 0;
}

如果数组是onearray[5] 则输出的结果15
但是如果数组的下标大于五输出的结果就是5这是为什么?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • John_ToString 2015-12-04 04:30
    已采纳

    你还是不知道strlen函数的用法以及它的内部实现,strlen函数获取字符数组长度的底层是找到第一个\0才算为止(当然字符串末尾有'\0',则另当别论)
    。你的char类型数组是在栈上的,你可以去调试看看内存,看看最后一个字符'b'的后面是什么字符,若果不是'\0'就一直往后看,直到找到'\0',算一下
    就可以得到你的答案了...

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • bdmh 2015-11-11 08:19

    onearray[5],这是随机的,他要找到结束符才算截止,你么有崩溃,算幸运的,onearray[6],你只给了5个字符,最后一个是结束符,所以到这就截止了,是5个

    评论
    解决 无用
    打赏 举报
  • Eleven 2015-11-11 10:59

    strlen是统计字符串长度,遇到'\0'结束。

    评论
    解决 无用
    打赏 举报
  • witcher_ozil 2015-11-18 15:53

    如果数组是onearray[5] ,strlen是找\0为止,而申请内存时正好赶上第15个字节后面有结束符了。如果数组是onearray[6],最后就是结束符。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题