【发布时间】:2014-11-21 08:33:56
【问题描述】:
int main ()
{
char* tab=new char[14] ;
cout << " lenght with sizeof: "<<sizeof(tab)<<endl;
cout << " length with strlen: "<<strlen(tab)<<endl;
system(" pause");
return 0;
}
我得到了输出:
sizeof 的长度:4
strlen 长度:30
我期待sizeof 的结果,但不是strlen 的返回结果!
对于那些急于发表的人来说,这是一个重复的问题。
我想说,这根本不是机会。因为我知道编译时间和运行时间以及许多其他关于strlen 和sizeof 的事情,但是我找不到这个结果的解释。
提前感谢您的帮助。
【问题讨论】:
-
sizeof(tab)为您提供char*指针的大小,而不是分配的空间大小,或存储在其中的以空结尾的 c 字符串的大小。 -
您的
char数组未初始化,因此strlen的结果未定义,因为它将计算所有字符,直到找到空字符为止。 -
这么多重复...
-
@SADOK 看看 @geoffroy 的评论,这就是为什么。
-
@SADOK 读到:'顺便说一句,重复有什么问题?'
标签: c++ visual-c++ c++11 strlen