标签:
int _tmain(int argc, _TCHAR* argv[])
{
char string1[3] = "aaa"; //一般来说很多IDE都会报错,但有的不会
//实际上,const char[6] 的值是不能用于初始化char[5]的实体的
char string2[3] = "bb";
return 0;
}
我们假设上一段代码,编译器并不报错。当你使用strlen(string1) 的时候,结果是6而不是3。
为什么?
因为strlen()这个函数是寻找‘\0‘. 而string1并没有以‘\0‘结尾。所以strlen会顺着内存下去找,直到找到一个‘\0‘
而这个结束符是string2的。。。所以你得到了6(string1 + string2)的长度值。
另外说下,strlen()和sizeof()的结果也是不同的。strlen()在正常情况下是比sizeof()少1的。因为strlen并不把字符串的最后一位‘\0‘当作长度算进去。
cout<<sizeof("test")<<endl; //结果是5
cout<<strlen("test")<<endl; //结果是4
标签:
原文地址:http://www.cnblogs.com/sunfishgao/p/4762181.html