Hi,
muss für die fh ein programm schreiben was mir eine zahl zu einer belibigen basis umrechnet (2
Hi,
muss für die fh ein programm schreiben was mir eine zahl zu einer belibigen basis umrechnet (2
ich habe leider nur keine ahung wie ich eine pointer einer
funktion übergeben kann so das er veränderbar ist.
Du übergibst einer Funktionen stets einen Wert und sagst ihr, wie sie diesen Wert interpretieren muss. Solange du keine Referenzen verwendest, ist der Wert immer eine Kopie:
void foo( int _eine_zahl );
Innerhalb der Funktion hast du eine Zahl, die du beliebing ändern kannst. Änderungen sind ausserhalb der Funktion nicht sichtbar.
void(foo* _zeiger_auf_eine_zahl);
Nun hat deine Funktion einen Zeiger. Der Zeiger ist im Prinzip auch nichts anderes als irgend ein Wert. Du weisst, der Zeiger zeigt auf eine Zahl, und die interessiert dich: du möchtest auf die Zahl zugreifen, folglich dereferenzierst du den Zeiger:
int die_zahl = *_zeiger_auf_eine_zahl;
Möchtest du nun auch den Zeiger ausserhalb der Funktion verändern, so musst du einfach nur einen Zeiger auf den Zeiger angeben:
foo( int** _zeiger_auf_zeiger_auf_int );
mit int* ein_zeiger = *_zeiger_auf_zeiger_auf_int;
bzw int der_int = **_zeiger_auf_zeiger_auf_int;
Wenn der ** etwas zu windig aussieht, darfst du den Quelltext auch anders schreiben:
typedef (int*) INTZeiger;
void foo( INTZeiger* _zeiger_auf_zeiger_auf_int );
Diese schreibweise ist absolut gleich mit der von oben!
Da _zeiger_auf_zeiger_auf_int nur Mittel zum Zweck ist, du möchtest nur den eigentlichen Zeiger ändern - nicht dein ZeigerAufZeiger - verwendest C++ an solchen Stellen gerne Referenzen:
typedef (int*) INTZeiger;
void foo( INTZeiger& _zeiger_auf_zeiger_auf_int );
int* p_int = _zeiger_auf_zeiger_auf_int;
int die_zahl = *_zeiger_auf_zeiger_auf_int;
Ohne den typedef sieht das übrigens wieder so aus:
void foo( int*& _zeiger_auf_zeiger_auf_int );
Hoffe ein wenig Licht ins Dunkel gebracht zu haben! :o)
Markus