Denkfehler? Problem mit Max-Funktion (Übergabe Zeiger an Funktion)
-
Hallo Miteinander,
warum liefert mir folgende Funktion (wie gedacht) den ersten, aber nicht den maximalen Wert zurück?
#include <iostream> int* max(int*, int*); int main() { int iWert1 = 3; int iWert2 = 5; int* pPointer; pPointer = (&iWert2, &iWert1); std::cout << *pPointer << std::endl; return 0; } int* max(int* max_a, int* max_b) { if(*max_a > *max_b) return max_a; else return max_b; }Ich komm gerade nicht drauf. Ist warscheinlich ein ganz dummer fehler, aber leider brauche ich eure Hilfe hierbei (mit Google wird es hier schwer), versuche nach meinem Burn Out wieder Fuß zu fassen - also bitte nicht wehtun

Grüße
BlackEgg
-
BlackEgg schrieb:
pPointer = (&iWert2, &iWert1);Du rufst nicht deine max Funktion auf.
Übrigens macht es absolut keinen Sinn Zeiger zu übergeben. Im Gegenteil, es macht mehr Sinn Integer zu übergeben.
-
Korrektur: Es kann Sinn machen Zeiger zu übergeben. Aber du solltest noch assertions hinzufügen.
-
Wenn du mehr Warnungen bei deinem Compiler angeschaltet hättest, hätte dieser dich auf den Fehler aufmerksam gemacht. Grüße an Ishildur, falls er dies liest!
-
Oh richtig!

Dankeschön! Das ganze soll nur Sinn einer Übung für mich sein. Hab längere Zeit C# programmiert und irgendwie die Grundlagen von C++, die ich mir zuvor angeeignet habe nicht mehr im Kopf.

Grüße
BlackEgg
-
pPointer = (&iWert2, &iWert1);Wieso geht das überhaupt bzw. was soll das sein

-
Kommaoperator. In C und C++ kann man Ausdrücke selben Typs durch Komma getrennt auflisten. Der Gesamtausdruck entspricht dem Wert ganz rechts.