kaki schrieb:
void append(struct element **lst, int value)//wofür steht **
//in dem rumpf steht dann die folgende zuweisung. wenn ich am parameter ein * entferne läuft es nicht mehr, bzw ich bekomme eine fehlermeldung das die typen nicht zusammen passen
struct element *lst_iter = *lst;
Der Funktionsname append legt nahe, dass du innerhalb der Funktion die Liste selbst ändern und nicht nur bestehende Werte in der Liste ändern willst.
Wenn du einen Wert durch eine Funktion ändern willst, musst du einen Zeiger darauf übergeben, in deinem Fall also einen Zeiger auf die Liste und das entspricht genau struct element **lst, wobei struct element *lst die Liste selbst ist.
Sinnigerweise wäre dann append wie folgt zu definieren:
void append(struct element **lst, size_t *bisheregroesse,int value)
{
*lst=realloc(*lst,++*bisherigegroesse*sizeof**lst);
(*lst)[*bisherigegroesse-1].structelement = ...
}
und im aufrufenden Kontext dann in etwa:
struct element *liste = 0;
size_t i,z=0;
append( &liste, &z, 1234 );
append( &liste, &z, 5678 );
for( i=0; i<z; ++i )
printf("%d.Element = ...",liste[i].structelement);