组合 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;
最后 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;