Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » 2dimensionale Arrays übergeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
23.10.2004, 14:24 Uhr
~Chm
Gast


Wie übergibt man 2 dimensionale Arrays an eine Funktion

Der Code funzt nicht???



Wieso ?????


C++:

#include <iostream.h>

void count_to_64(int array[][]){
    
    int zaehler=0;
    
    for(int i=0;i<8;i++){
    
        for(int j=0;j<8;j++){
              
            zaehler++;
            
            array[i][j]=zaehler;
        
            cout<<array[i][j];
        
        }
        cout<<endl;
    }
}

int main()
{

    int array[8][8];

    count_to_64(array);

return 0;
}





 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.10.2004, 15:51 Uhr
Tommix



Hallo,
Du mußt die Dimensionen mit übergeben (eine Funktion die ein array[3][4] bearbeitet, wird anders übersetzt als eine für array[4][3]):

C++:
void count_to_64(int array[8][8]);


Die erste Dimensionsangabe - aber nur die - kann man auch weglassen.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.10.2004, 17:03 Uhr
(un)wissender
Niveauwart


So sieht das man aus.
Kannste es auch als int** übergeben, ist aber ein cast erforderlich.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.10.2004, 18:42 Uhr
Tommix



Dann klappt aber ein Zugriff mittels array[i][j] nicht mehr, man muß die Adressrechnung dann selber machen.
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.10.2004, 18:47 Uhr
(un)wissender
Niveauwart


Nein. mit int** geht das bestens.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.10.2004, 08:25 Uhr
Tommix



Das ist dann aber kein int array[8][8] mehr. Dein erster Post suggeriert irgendwie, man könne

C++:
void count_to_64(int** array]){
...
int array[8][8];
count_to_64((int**)array);


schreiben.
Das mit der Adressrechnung war aber Quatsch, da hast Du recht (trifft auf int* zu).

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.10.2004, 11:09 Uhr
(un)wissender
Niveauwart


Gut, war nicht eindeutig, das stimmt.


Um es klar zu machen, das geht nicht! Zumindest nicht wenn array ursprünglich sowas ist array[][]:


C++:
#include <iostream>

void count_to_64(int** array)
{
    std::cout << array[4][4] << std::endl;
}

int main()
{
    int array[8][8];
    array[4][4] = 4;
    count_to_64((int**)array);
}



So geht es:


C++:
void count_to_64(int* array)
{
    std::cout << array[4 * 8 + 4] << std::endl;
}

int main()
{
    int array[8][8];
    array[4][4] = 4;
    count_to_64((int*)array);
}



oder so (hier beste Lösung)


C++:
void count_to_64(int array[][8])
{
    std::cout << array[4][4] << std::endl;
}

int main()
{
    int array[8][8];
    array[4][4] = 4;
    count_to_64(array);
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.10.2004, 16:30 Uhr
~chm
Gast


Danke aber bei eindimesionalen braucht man den Index nicht mit uebergeben

da reicht []
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.10.2004, 16:36 Uhr
(un)wissender
Niveauwart


Ja, nu, war aber doch von zweidimensional die Rede, oder nicht?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.10.2004, 17:01 Uhr
Tommix



... und die erste Dimension kann man ja jeweils weglassen.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: