2017-04-16 3 views
-5

Ich habe Probleme, das Verständnis dieses Programm bitte helfen:Bitte erklären Sie, wie dieses C++ Programm funktioniert?

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

Es ist richtig und gebe folgende Ausgabe enter image description here

+0

Willkommen bei stackoverflow.com. Bitte nehmen Sie sich etwas Zeit, [die Hilfeseiten] (http://stackoverflow.com/help) zu lesen, besonders die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Http://stackoverflow.com/help/) on-topic) und ["Welche Art von Fragen sollte ich vermeiden zu fragen?"] (http://stackoverflow.com/help/dont-ask). Nimm auch die [Tour] (http://stackoverflow.com/tour) und lies über [wie man gute Fragen stellt] (http://stackoverflow.com/help/how-to-ask). Zuletzt erfahren Sie, wie Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) erstellen können. – Weaboo

+3

'5+" Hellow Welt ";' ist Zeigerarithmetik. 'hellow world '' ist ein String-Literal, ein 'const char *' also ist das das gleiche wie 'const char * temp =" hellow world "; gefolgt von' 5 + temp; ', was dasselbe wie' ist & temp [5]; ' – user4581301

+0

Wenn' foo' ein Zeiger ist (was hier der Fall ist), dann ist 'foo + 5' das gleiche wie' 5 + foo' und dasselbe wie 'foo [5]' was wiederum ist das gleiche wie '5 [foo]'. –

Antwort

2

In dritter Zeile des Codes, ein anonymes Zeichenfeld wird vom Compiler erstellt. Wenn Sie der C-Zeichenfolge 5 hinzufügen, führt es Zeigerarithmetik aus, und verschiebt den Zeiger 5 voran an die Zeichenfolge. Daher überspringt es das Zeichen 5 aus dem C-String und speichert nur andere Zeichen aus dem Array in s.

Verwandte Themen