Pointer bei zweidimensionalen Arrays



  • Hi Leute,

    hab da ein kleines Problem.
    Wie kann ich von einem zweidimensionalen Array einen Pointer z.B. auf die
    2.Reihe 1.Zahl bekommen.

    Komme da mit der Zeile (zahlenX = zahlen[i][0]) nicht weiter.

    Wäre nett wenn mit jemand helfen könnte.

    Gruß Tobifx

    Hier noch ein Teil von meinem Programm:

    #include <iostream>
    #include <time.h>
    
    using namespace std;
    
    void zahlenErzeugen(int *zahlen);
    void sort(int *zahlenS);
    void ausgabe(int *zahlenA);
    
    int main(void) 
    {
    
    int i;
    int kombi;
    int a=6;
    int *zahlen;
    int *zahlenX;
    
    cout << "Geben Sie die Anzahl der Kombinationen ein: ";
    cin >> kombi;
    
    zahlen = new int(kombi, a);
    
    for(i=0; i<kombi; i++) 
    {
    	zahlenX = zahlen[i][0]; 
    
    	zahlenErzeugen(zahlenX);
    
    	sort(zahlenX);
    
    	ausgabe(zahlenX);
    }
    

    /edit: Bitte Code-Tags verwenden!



  • Zweite Reihe, erstes Element:

    array[2][0];
    

    + Adressoperator um die Adresse zu bekommen + sie einem Zeiger zuweisen
    ergibt:

    int *zeiger = &array[2][0];
    

    als tips noch obendrauf:
    statt <time.h> verwende <ctime>
    und deklariere variablen erst so spät wie möglich.



  • Danke für die schnelle Hilfe!!!

    Nur kommen dann bei mir dann die Fehlermeldungen:

    error C2109: Index benoetigt ein Feld oder einen Zeigertyp
    error C2102: '&' erwartet L-Wert

    Tobifx



  • ooh sorry, da war ich wohl zu vorschnell.
    das problem liegt darin, wie du das array allozierst.

    zahlen = new int(kombi, a);
    

    du legst einen einzelnen int am heap an, der den wert von a hat.

    cout << *zahlen;
    

    dürfte dir als ausgabe 6 geben (der wert von a).
    denn beim anlegen hast du denn komma operator, der einfach den wert seines letzten arguments (a) zurückgibt.
    ein beispiel, wie man mehrdimensionale arrays realisiert, findest du bei den FAQs.
    du könntest auch vektoren verwenden, aber wie gesagt bei den FAQs ist es genauer erklärt.


Log in to reply