2017-04-16 34 views
-5

我有麻烦,在理解这个方案,请帮助:请解释这个C++程序是如何工作的?

#include <iostream> 
using namespace std; 
int main(){ 
const char* s = 5+"hellow world"; 
cout<<s; 
return 0; 
} 

这是正确的,并给出以下输出enter image description here

+0

欢迎来到stackoverflow.com。请花些时间阅读[帮助页面](http://stackoverflow.com/help),尤其是名为[“我可以问些什么话题?”]的章节(http://stackoverflow.com/help/)讨论话题)和[“我应该避免问什么类型的问题?”](http://stackoverflow.com/help/dont-ask)。请参阅[tour](http://stackoverflow.com/tour)并阅读[如何提出良好问题](http://stackoverflow.com/help/how-to-ask)。最后,请学习如何创建[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – Weaboo

+3

'5+“hellow world”;'是指针算术。 ''hellow world''是一个字符串文字,'const char *',所以它和'const char * temp =“hellow world”;''相同,后面是'5 + temp;', &temp [5];' – user4581301

+0

如果'foo'是一个指针(这里就是这种情况),那么'foo + 5'与'5 + foo'相同,并且与'foo [5]'相同与'5 [foo]'相同。 –

回答

2

在代码中的第三行,一个匿名的字符数组由编译器创建。当您将5添加到c字符串时,它会执行指针运算并将指针5向前移动到字符串。因此,它会跳过c字符串中的5字符,并仅将该数组中的其他字符存入s