组合 sizeof 字符串和字符

Combine sizeof string and chararcter

最后 2 个 cout 语句的大小相同。为什么?

int main() 
{
char ch=127;
cout<<sizeof(ch)<<endl;    //Size=1
cout<<sizeof("Hello")<<endl;    //Size=6
cout<<sizeof("Hello"+ch)<<endl;    //Size=8
cout<<sizeof("HelloWorld"+ch)<<endl;    //Size=8
return 0;
}

请说明。 谢谢

当您执行 "Hello"+ch 时,包含字符串 "Hello" 的数组衰减为指向其第一个元素的指针,并且您将 ch 添加到该指针。

指针运算的结果是一个指针,就是你得到的大小。


等效代码类似于

char const hello[] = "Hello";
char const* phello = hello;  // equivalent to &hello[0]
char const* result = phello + ch;
cout << sizeof(result) << endl;