Zeiger auf struktur?

Gast #1010296
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
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
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
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
> 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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.