Out Pointer

Hi,

ich wollte interessehalber mal eine Funktion schreiben die nichts zurückgibt aber einen Zeiger benötigt und den dann mit Werten füllt.

Etwa so:

Code:
void func (int a, int b, int** p )
{
    p = a + b;
}
Code:
int *p = NULL;

func (1,2,p);

cout << *p << endl;

Aber so klappts es leider nicht, ich habe auch schon andere Varianten ausprobiert aber entweder ist das Ergebnis 0 oder das Programm crasht -.-
Ich weiss nicht ob so ein Out Pointer überhaupt Sinn macht aber ich würde mal gern wissen wie das klappt.
 
Code:
void func(int a, int b, int *p) {
    *p = a+b;
}
...
int foo;
func(2,3,&foo);   /* foo enthält nun 5 */

1. Du benötigst einen Zeiger auf ein Int, nicht einen Zeiger auf einen Zeiger auf ein Int.
2. Du musst den Zeiger mittels (*) erst dereferenzieren, um den Wert an der Adresse, auf die er zeigt, zu verändern.
3. Du solltest nicht NULL an die Funktion übergeben, da somit versucht würde in einen ungültigen Speicherbereich zu schreiben. Daraus resultiert auch dein Absturz.
 
Vielen Dank, so klappt alles wunderbar :)

Das war sogar mein erstern Versuch, nur habe ich dabei den NULL Pointer übergeben und dann ist es gecrasht, genau wie du sagtest.
 
Zurück
Oben