讨论/《C++ 面试突击》 - sizeof 和 strlen 的区别/
《C++ 面试突击》 - sizeof 和 strlen 的区别
共 10 个回复

cout << sizeof(arr) << endl; // 20
这里是不是应该是20,因为我认为前面申明的char[10]所占空间应该是10;

23

我测试了,最后的返回值确实是10 这个应该是作者的笔误

3

我也感觉20是不是有问题??

3

应该是手误 我看改过来了

1

这个20就错的很扎眼。

1

6.返回类型不同

Linux 64位

int main()
{
//char arr[20] = "hello";
//size_of(arr);
char arr[10] = "hello";
cout << "char arr[10] = hello==>strlen:"<<strlen(arr) << endl;//5
cout << "char arr[10] = hello==>sizeof:"<<sizeof(arr) << endl;//10

string str = "hello";
cout << "string str = hello==>strlen:"<<strlen(str.c_str()) << endl;//5
cout << "string str = hello==>sizeof:"<<sizeof(str) << endl;//8

char* pstr = "hello";
cout << "char* pstr = hello==>strlen:"<<strlen(pstr) << endl;//5
cout << "char* pstr = hello==>sizeof:"<<sizeof(pstr) << endl;//8
return 0;

}

这里是10吧

对,我在 VS 2019 测试了

char str[20] = "Hello";
cout << sizeof(str) << endl;
cout << strlen(str) << endl;

结果:

20
5