Struktur-Array übergeben



  • Hallo,

    Ich bin ziemlicher Anfänger was C angeht und habe folgende Frage:

    Ich habe ein Array basierend auf einer neuen Struktur erstellt.
    Nun muss ich dieses Array an ein Unterprogramm übergeben.

    Meine Frage nun? Wie mache ich das?
    Man müsste ja eigentlich einen Zeiger basierend auf dieser Struktur erstellen,
    allerdings auf ein Array... (normale Variable würde ich noch schaffen)

    Gruss 1234user



  • was genau meinst du mit "Unterprogramm"?



  • Ach so (ist halt anfängerdeutsch)

    void main()
    {
    //Code...
    }

    void UNTERPROGRAMM1()
    {
    //das hier ist das "unterprogramm"
    }

    Gruss 1234User



  • Zunächst: main muss int zurückgeben, das verlangt der Standard so. Also

    int main(void) {
      /* ... */
    
      return 0; /* 0 bei Erfolg, sonst etwas anderes */
    }
    

    Ansonsten ist der einzige bemerkenswerte Unterschied zwischen der Übergabe von Arrays und der anderer Typen, dass du bei einem Array in aller Regel die Länge des Arrays mit übergeben musst, damit die Funktion weiß, wie weit sie lesen/schreiben darf. Beispiel:

    #include <stddef.h>
    #include <stdio.h>
    
    struct zahl {
      int wert;
    };
    
    void zahlen_ausgeben(struct zahl const zahlen[], size_t n) {
      size_t i;
    
      for(i = 0; i < n; ++i) {
        printf("%d\n", zahlen[i].wert);
      }
    }
    
    int main(void) {
      struct zahl pi_ziffern[] = { { 3 }, { 1 }, { 4 }, { 1 }, { 5 }, { 9 } };
    
      zahlen_ausgeben(pi_ziffern, 6);
    
      return 0;
    }
    


  • Hallo,

    Wir haben halt (anscheinend falsch) gelernt, dass main auch void haben kann...

    Ich wusste nicht genau, wie man das Array übergibt,
    also dass man bei der Funktion ein neues Array basierend auf dieser Struktur macht.
    Aber nun ist es klar 🙂

    Vielen Dank und Gruss
    1234User


Log in to reply