Zeiger auf struktur?

Gast #1010296
Lesenswert?

Hi,

innerhalb einer Funktion fkt() möchte ich einen Zeiger
auf eine Struktur definieren.Dem Zeiger werden in einer
for-Schleife versch. Werte zugewiesen.
Diese möchte ich in einem Array geben und als Rückgabewert
liefern:

struct mystruct * fkt(){

   struct mystruct *point;
   for(point=irgendwas; point; point=point->next)

       /*so, jetzt möchte ich alle point's in array abspeichern,
         aber wie?*/

  return(den array mit dem Strukturzeigern auf mystruct);
}

Vielen Dank für die Hilfe
#1010344
Lesenswert?

Um etwas in ein Array zu speichern, muss man erstmal ein Array haben. Es 
gibt 2 Möglichkeiten - entweder Du legst das Array in der Funktion 
mittels malloc o.ä. an, also struct mystruct **pointarray = 
malloc(maximale Größe), oder Du übergibst der Funktion einen Zeiger auf 
ein bereits exestierendes Array (am besten mit seiner Größe), also 
struct mystruct * fkt(struct mystruct **pointarray, size_t size). Beim 
ersteren muss man noch beachten, dass der Array-Speicher irgendwann 
wieder manuell freigegeben werden muss.

MfG Mark
Gast #1010351
Lesenswert?

Ich meine, das ich ein Array mit Strukturzeigern als
Returnwert geben möchte.Wenn point auf einen bestimmten
Wert zeigt mach ich "return(point)".Wie aber, wenn ich
mehrere Werte auf die point (durch Schleife)zeigt habe.
Dann müsste ich ein array als Returnwert geben
(also ein Array von Strukturzeigern).
Und da habe ich keine Ahnung!

Christian
Persönliche Seite #1010355
Lesenswert?

Suchst du sowas?
1
struct mystruct ** fkt() {
2
  int size = 5;
3
  struct mystruct ** ptr = malloc( sizeof(struct mystruct *) * size );
4
  for ( int i = 0; i < size; ++i ) {
5
    ptr[i] = malloc( sizeof(struct mystruct) );
6
    // ptr[i] füllen
7
  }
8
  return ptr;
9
}

Ist aber keine verkettete Liste mehr. Vielleicht schreibst du mal, wofür 
du das genau brauchst.
Gast #1025450
Lesenswert?

> darum übergibt man auch einen Zeiger auf die Struktur. hätte ich
> dazusagen sollen!
Dann kannst du auch gleich den Zeiger auf das Array übergeben, macht den 
Zugriff auf den Inhalt auch (schreib) kürzer.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren