pointer

js-mueller

Erfahrenes Mitglied
hi ich bin gerade bei meinem buch an der stelle Pointer angekommen und mir tut sich eine frage in dem bubeispiel auf. Dieses beispiel tauscht die werte x und y funktioniert auch alles ganz gut nur mir ist nicht klar wieso dies so geht.
Also ich hätte die funktion so geschrieben, und weiss net wieso se anders richtig ist :-/
Nach Meiner auffassung müsste es so richtig sein aber warum ist es das nicht :(

Ich hoffe es hilft wer :)

Code:
//temp wird der wert der Speicherstelle a zugewiesen
temp = *a
//Der Speicherstelle a wird der wert der speicherstelle b zugewiesen
a = *b
//Der Speicherstelle b wird der Wert temp zugewiesen
b = temp;

Code:
#include <iostream>
using namespace std;

void tausche(int *, int *);

void tausche(int *a,int *b)
{
    int temp;

    temp = *a;
    *a = *b;
    *b = temp;

}

int main()
{
    int x = 2, y = 7;

    cout << "Vorher: " << x << " " << y << "\n";
    tausche(&x,&y);
    cout << "Vorher: " << x << " " << y << "\n";
}
 
Randar hat gesagt.:
Ich hoffe es hilft wer :)

Code:
//temp wird der wert der Speicherstelle a zugewiesen
temp = *a
//Der Speicherstelle a wird der wert der speicherstelle b zugewiesen
a = *b
a nimmt als Wert eine Speicheradresse auf und nicht einen anderen Wert.
Sprich du kannst nicht einen int Wert in einem Pointer speichern.
Was du kannst ist einen int Wert dort im Heap speichern wo der pointer hinzeigt.
sprich:
*a = 5;

In dem Beispiel könntest du auf
a z.b = &b;
speichern. Sprich wieder eine Speicheradresse aber kein int wert.

Mehr erklär ich morgen, wenn ich meine Promille ausgeschlafen habe :)
 
Zurück