array übergabe an funktion



  • hi Leutz!!

    und zwar zu meiner frage, ich habe 2 arrays des eine übergebe ich als "pointer" das zweite ist ein 2 dim array jedoch geht das nicht so....

    int main(void)
    {   
        int i=0;
        char zahl[9]={'1','2','3','4','5','6','7','8','\0'};
        char ein[6][10];
    
        do
         { 
            /*
             .
             .
            */
    
         }while(!vergleich(zahl,ein));
    return 0;
    }
    

    wird übergeben an:

    int vergleich(char* zahl, char* ein)
    {
        int i,j,k,ok=1;
    
        for (k=0;k<9;k++)
          {
            for (i=0;i<5;i++)
              {
                if(zahl[i] == ein[i][k]
    /*
    .
    .
    .
    */
    

    bei einem 1 dim array geht das ja.... aber muss ich bei einem 2 dim array das ganze array übergeben?? sprich als kopie? oder kann ich da auch auf das array der main zugreifen? 😕



  • hallo,

    doch du kannst ein mehr dim. Array (Matrix) an eine Funktion übergeben.

    Allerdings nicht genauso wie ein ein dim. Array, dass hat mit der Speicherverwaltung zu tun.

    Ich versuch das mal kurz dazulegen:
    Wenn du ein Array übergibst, übergibst du bey call-by ref. die Adr. der ersten Position des Feldes, also den Pointer. Wie in deiner Funktion kannst du dann einfach mit der Adr weiter arbeiten (so wie du es gemacht hast das Feld direkt ansprechen oder per Pointer Arithmetik).

    Eine Matrix wird im Speicher genauso abgelegt wie ein Array also hintereinander (hat die Matrix also 5 x 4 Felder werden 20 Felder im Speicher hintereinander reserviert) ohne weitere Infos weiß der Rechner jedoch nicht, wo jetzt das Ende der jew. Zeile ist. Du musst also Informationen zur Zuordnung mit übergeben!

    Der Aufruf sollte also korrekter weise heißen:

    vergleich(zahl,ein[][10])
    

    Gruß
    Sascha

    Noch zum Nachlesen:
    http://de.wikibooks.org/wiki/C-Programmierung:_Arrays_und_Strings#Mehrdimensionale_Arrays



  • Hatten wir jetzt so oft in der letzten Zeit, warum macht denn keiner der Mods endlich ein umfassendes FAQ draus?



  • danke sasa!!

    verstanden!


Anmelden zum Antworten