看下面一段程序
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t aa[100],bb[200],cc[300];
int len = wcslen(aa);
std::cout<<len<<std::endl;
len = wcslen(bb);
std::cout<<len<<std::endl;
len = wcslen(cc);
std::cout<<len<<std::endl;
system("pause");
return 0;
}
运行结果为:
109
313
617
为何输出结果和预想中的不一样呢,其实原因在于你未初始化字符数组,这种情况下会造成数组在末位往后第n位初始化为0,同时数组长度越大,n的值也越大,根据编译器的不同,n的值也有变化。strlen也有同样的问题。
本文探讨了在C++中未初始化字符数组所引发的异常输出现象,详细解释了未初始化数组如何导致不可预测的长度输出,并提供了示例代码。
1325

被折叠的 条评论
为什么被折叠?



