strlen()和sizeof()之间有一个奇怪的区别
A weird difference between strlen() and sizeof()
我试图测试sizeof
和strlen
的差异,但今天我发现了一些奇怪的东西。代码如下。
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[]={"I am a boy"};
char b[]={'I',' ','a','m',' ','a',' ','b','o','y'};
cout << "sizeof(a) = " << sizeof(a) << endl << "sizeof(b) = " << sizeof(b) <<endl;
cout << "strlen(a) = "<< strlen(a) << endl << "strlen(b) = " << strlen(b) << endl;
return 0;
}
结果如下:
sizeof(a) = 11
sizeof(b) = 10
strlen(a) = 10
strlen(b) = 11
我知道结果的前三行,但我不明白为什么strlen(b)
是11。有人能帮我吗?
这只是运气。strlen
取一个指向char
的指针,并假定它是以nul结尾的字符串的开头。它基本上是向前走,直到找到一个