-5
我有麻烦,在理解这个方案,请帮助:请解释这个C++程序是如何工作的?
#include <iostream>
using namespace std;
int main(){
const char* s = 5+"hellow world";
cout<<s;
return 0;
}
我有麻烦,在理解这个方案,请帮助:请解释这个C++程序是如何工作的?
#include <iostream>
using namespace std;
int main(){
const char* s = 5+"hellow world";
cout<<s;
return 0;
}
在代码中的第三行,一个匿名的字符数组由编译器创建。当您将5
添加到c字符串时,它会执行指针运算并将指针5
向前移动到字符串。因此,它会跳过c字符串中的5
字符,并仅将该数组中的其他字符存入s
。
欢迎来到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
'5+“hellow world”;'是指针算术。 ''hellow world''是一个字符串文字,'const char *',所以它和'const char * temp =“hellow world”;''相同,后面是'5 + temp;', &temp [5];' – user4581301
如果'foo'是一个指针(这里就是这种情况),那么'foo + 5'与'5 + foo'相同,并且与'foo [5]'相同与'5 [foo]'相同。 –