Warum kann man Pointer nicht addieren?
-
Vergiss das mit dem
intptr_t
lieber ganz schnell wieder, der ist nicht für deinen Anwendungsfall gedacht. Schnapp dir lieber dein C++ Buch und arbeite das Kapitel über Pointer und Pointerarithmetik noch einmal durch.
-
Habe endlich die Lösung des "Problems".
Hier der richtige Programmcode:
#include <iostream> using namespace std; int main() { float x; float *px = &x; float y; float *py = &y; float z; float *pz = &z; cout << "\t Addition!" << endl; cout << endl; cout << "Geben Sie zwei Zahlen ein!" << endl; cin >> x >> y; cout << "Normale Addition!" << endl; z = x + y; cout << x << " + " << y << " = " << z << endl; cout << endl; cout << "Addition ueber Pointer!" << endl; *pz = *px + *py; cout << *px << " + " << *py << " = " << *pz << endl; cout << endl; return 0; }
Ich hoffe, dass es dem Standard entspricht???
Falls nicht, bitte sagen.
Gruß
Max
-
Warum ständig
endl
?
-
Dann wird es in der Ausgabe übersichtlicher...
-
Er meint, warum endl statt '\n'. endl macht neben dem Zeilenumbruch noch ein flush.
-
Wie?? Was meinst Du mit flush??
-
-
Habe ich das richtig verstanden, dass die Anweisung
cout << endl;
alles auf null setzt und nur für einen Zeilenumbruch die Anweisung
cout << "\n"
besser ist??
-
Eigentlich ist es total egal, solange du nix I/O-lastiges schreibst.
Hintergrund ist, dass auf die Konsole schreiben sehr langsam ist, deswegen wird Text im Stream gesammelt und viel auf einmal geschrieben. Mit flush/endl sagst du dem Stream, dass er SOFORT alles schreiben soll, dh. möglicherweise werden mehr langsame Schreiboperationen ausgeführt.
Im Zweifelsfall einfach '\n'. endl/flush nur, wenn du die Ausgabe sofort brauchst und eine Verzögerung nicht akzeptabel ist.
-
Ok ... werde ich mir merken...
Mein Dozent im Fach Datenverarbeitungstechnik, wozu eben diese C++ Programmierung gehört, verwendet eigentlich nur
cout << endl;
Anweisungen, um einen Zeilenumbruch zu machen.
Dass es den Hintergrund hat, wusste ich an der Stelle nicht.
Gruß
-
Wie gesagt, es ist egal ob das Programm jetzt 300ms oder 400ms läuft.
Nur zb in einem Logging-Framework, das 100 Ausgaben pro Sekunde schreibt, kann so ein Flush Probleme machen.
-
std::endl() beinhaltet auch die unterschiedlichen Line-Endings (\n vs \r\n).
-
theta schrieb:
std::endl() beinhaltet auch die unterschiedlichen Line-Endings (\n vs \r\n).
New-line in C++ ist immer '\n', wie die Repräsentation des Betriebssystems aussieht ist egal.
-
theta schrieb:
std::endl() beinhaltet auch die unterschiedlichen Line-Endings (\n vs \r\n).
Diese Konvertierung spielt sich auf viel tieferer Ebene ab (das ist zum Beispiel das, was das binary bei fstreams beeinflusst). endl ist wirklich nur eine Abkürzung für
'\n' << flush()
.