strlen()和sizeof()之间的奇怪区别

Yun*_* Li -2 c++ sizeof strlen

我试图测试的差异sizeofstrlen,但我发现了一些奇怪的今天.代码如下.

#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;

}
Run Code Online (Sandbox Code Playgroud)

结果如下:

sizeof(a) = 11
sizeof(b) = 10
strlen(a) = 10
strlen(b) = 11
Run Code Online (Sandbox Code Playgroud)

我知道结果的前三行,但我不明白为什么strlen(b)是11.有人可以帮我吗?

jua*_*nza 6

这只是运气.strlen获取指针char,并假设它是以空字符结尾的字符串的开头.它基本上向前迈进,直到它找到了\0.在\0数组结束后不久就会出现一个地方b,但实际上你正在调用未定义的behviour.