# struct an Funktion übergeben



## Orca25 (8. April 2005)

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?

```
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


----------



## BadMourning (8. April 2005)

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

```
int func()
{
    Struktur *me;

    mall( &me );
}

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

2. Struktur zurückgeben

```
int func()
{
    Struktur *me;

    me = mall();
}

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

  return meReturn;
}
```

BadMourning


----------



## Orca25 (9. April 2005)

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


----------

