struct an Funktion übergeben

Orca25

Grünschnabel
Hallo,
ich versuche einen Zeiger auf eine Struktur an eine Funktion zu übergeben, in welcher ein malloc() ausgeführt wird. Es soll dadurch eine Struktur als erstes Element einer Liste erzeugt werden.
Der malloc() läuft auch durch und die neue Adresse wird zugewiesen.
Aber leider ändert sich der Zeiger nicht. Was mache ich falsch?
Code:
struct Struktur {
       int x;
       struct Struktur * next;
}

void mall(struct Struktur * me) {
      me = malloc(sizeof(struct Struktur));
      me->x = 0;
}

int main (int args, char *argv[]) {
      struct Struktur * first = NULL;
      struct Struktur **f = first;
      mall(f);
}

Bin für jede Hilfe dankbar.
Orca25
 
Du kannst einen Pointer nicht übergeben und in der Funktion Speicher für ihn anlegen, das ist wie call-by-value.

Du hast zwei Möglichkeiten:

1. Pointer auf Pointer übergeben
Code:
int func()
{
    Struktur *me;

    mall( &me );
}

void mall( Struktur **me )
{
  *me = (Struktur*) malloc( sizeof( Struktur) );
}

2. Struktur zurückgeben
Code:
int func()
{
    Struktur *me;

    me = mall();
}

Struktur* mall()
{
  Struktur* meReturn = (Struktur*) malloc( sizeof( Struktur) );

  return meReturn;
}

BadMourning
 
Wunderbar. Klappt hervorragend. Vielen Dank. genau da lag das Problem Pointer auf Pointer-Übergabe.
Orca25
 
Zurück