Array Problem!



  • Hi!

    Ich habe einen Array in der main() erstellt und will ihn an eine Funktion übergeben!
    Aber irgendwie kommen von den 10 Array Feldern immer nur eins an!

    Muss man was bestimmtes beachten bei der übergabe von Arrays??



  • Thes-One schrieb:

    Muss man was bestimmtes beachten bei der übergabe von Arrays??

    du kannst einen pointer auf das array übergeben:

    void f(int *p)
    {
       int i = p[0]; // erstes element usw.
    }
    
    void main()
    {
      int a[...];
      f(a);
      ...
    }
    

    🙂



  • Das Problem ist das das Array fest vorgegeben ist genauso wie die Funktionsköpfe!

    Array:

    typedef double Array[MAX_GROESSE + 1];
    

    Funktionskopf:

    int Array_Ausgeben (Array p, unsigned int maxGROESSE, char * String);
    

    Das heißt ich muss den Aufruf aus der main() in der Form machen .....

    Array a;
    ArrayAusgeben(a,.............);
    

    Aber das geht ja nicht!



  • Thes-One schrieb:

    Aber das geht ja nicht!

    Wie äußert sich denn das?



  • Siehe Oben!

    Es wird nicht das ganze Array übergeben sondern nur ein Feld!



  • Klar wird das gesamte Array übergeben (genauer gesagt - es wird ein Zeiger auf das erste Array-Element übergeben) - und über den Index-Operator [...] kannst du dir dann die geeigneten Elemente herauspicken.



  • Thes-One schrieb:

    Siehe Oben!

    Schon klar 😉

    Es wird nicht das ganze Array übergeben sondern nur ein Feld!

    Ich wollte auch darauf hinaus, dass Du uns sagst, wie Du das feststellst. Behaupten kann man viel. Es könnte ja auch sein dass mehr als ein Feld übergeben wird, aber der Zugriff fehlerhaft ist, so dass Du meinst, nur das erste Feld zu sehen.



  • Ne ich bin mit dem Debugger durch gegangen!
    In der Main hat das Array 10 Felder sobald ich es übergebe hat es nur noch 1!
    Aber das komische ist das ich auf Feld 3 zugreifen kann und kein Fehler kommt!
    Also könnte ich Feld 3 füllen obwohl kein Feld 3 sichtbar ist!

    Was läuft da schief??



  • Thes-One schrieb:

    Was läuft da schief??

    Vermutlich garnichts. Evtl könnte man es auf den Debugger schieben, aber da Du einen Zeiger auf das Array übergibst ist ihm die Länge schlichtweg unbekannt. Deshalb nimmt er an der Zeiger zeigt auf ein Objekt.

    Dass Dein Zugriff auf das dritte Element funktioniert ist hingegen völlig normal 😃



  • In der Funktion hast du überhaupt kein Array mehr, sondern "nur" einen Zeiger auf das erste Element des Arrays. Und mit dem Zeiger kannst du so arbeiten, als ob er auf ein vollwertiges Array zeigt (einzige Einschränkung: Du siehst dem Zeiger nicht an, wieviele Elemente hinter ihm stehen - deswegen mußt du die Arraygröße seperat übermitteln.



  • Achso!

    Hab ich alles verstanden?

    Also ist das Array schon richtig übergeben worden nur ich kann mit dem Debugger den Inhalt und die Felder nicht einsehen weil es nur ein Zeiger auf das Array in der Main ist?



  • Thes-One schrieb:

    Also ist das Array schon richtig übergeben worden nur ich kann mit dem Debugger den Inhalt und die Felder nicht einsehen weil es nur ein Zeiger auf das Array in der Main ist?

    Jep.


Anmelden zum Antworten