#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这是为什么?
你还是不知道strlen函数的用法以及它的内部实现,strlen函数获取字符数组长度的底层是找到第一个\0才算为止(当然字符串末尾有'\0',则另当别论)
。你的char类型数组是在栈上的,你可以去调试看看内存,看看最后一个字符'b'的后面是什么字符,若果不是'\0'就一直往后看,直到找到'\0',算一下
就可以得到你的答案了...
onearray[5],这是随机的,他要找到结束符才算截止,你么有崩溃,算幸运的,onearray[6],你只给了5个字符,最后一个是结束符,所以到这就截止了,是5个
strlen是统计字符串长度,遇到'\0'结束。
如果数组是onearray[5] ,strlen是找\0为止,而申请内存时正好赶上第15个字节后面有结束符了。如果数组是onearray[6],最后就是结束符。