tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
19368
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    WhiteNazgul WhiteNazgul ist offline Rookie
    Registriert seit
    Nov 2003
    Beiträge
    6
    Hi!

    Leider lassen es meine Kenntnisse derzeit noch nicht zu das folgende Problem selber zu meisternDie MSDN war auch nicht ergiebig)
    Mittels new soll ein Mehrdimensionales Array initialisiert werden.

    float *pnewarray=0;
    pnewarray=new float pnewarray[x][y];

    Leider lässt es der Compiler nicht zu, meine Frage: Ist es überhaupt möglich Mehrdemsionale Arrays dynamisch erstellen zu lassen? Wenn ja, wie

    Vielen Dank für die mögliche Antwort im vorraus.
    Geändert von WhiteNazgul (17.11.03 um 20:55 Uhr)
     

  2. #2
    Avatar von rockbaer
    rockbaer rockbaer ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Beiträge
    94
    pnewarray = new float [x * y];

    oder

    float (*pnewarray)[y] = new float [x][y];
    Geändert von rockbaer (18.11.03 um 12:45 Uhr)
     

  3. #3
    WhiteNazgul WhiteNazgul ist offline Rookie
    Registriert seit
    Nov 2003
    Beiträge
    6
    Habe dank, nur würde
    pnewarray[x*y] ein eindimensionales Array mit x*y Elementen erzeugen.

    Bei der zweiten Möglichkeit setzt du vorraus, das eine unbekannte, in diesem Fall y bekannt ist. Beide x,y sind allerdings Unbekannte, die zur runtime erst ermittelt werden.
     

  4. #4
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    worüber dein compiler meckert ist das ein multidimendionales array über einen pointer mit n ebenen addressiert werden muss wobei n die anzahl der dimensionen ist... wenn du also ein 2 dimensionales array hasst muss du float** benutzen
    des weiteren ist der syntax für new garantiert nicht
    new float pnewarray[x];
    sondern wenn schon dann new float[x];

    multidimensionale arrays müssen in mehreren schritten entsprechend den ebenen erstellt werden.. das sieht dann so aus:

    Code :
    1
    2
    3
    4
    
    float** myarray = new float*[x];
    for(int i = 0; i < x; i++) {
        myarray[x] = new float[y];
    }

    und gelöscht wird es mit
    Code :
    1
    2
    3
    4
    
    for(int i = 0; i < x; i++) {
        delete[] myarray[x];
    }
    delete[] myarray;
     

  5. #5
    WhiteNazgul WhiteNazgul ist offline Rookie
    Registriert seit
    Nov 2003
    Beiträge
    6
    Habe vielen Dank für die präzise und schnelle Antwort, und das super Beispiel.

    PS:Und ja ich meinte eigentlich pnewarray=new int[x].
     

  6. #6
    Avatar von rockbaer
    rockbaer rockbaer ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Beiträge
    94
    Original geschrieben von WhiteNazgul
    Bei der zweiten Möglichkeit setzt du vorraus, das eine unbekannte, in diesem Fall y bekannt ist. Beide x,y sind allerdings Unbekannte, die zur runtime erst ermittelt werden.
    Natzgul, wenn du in c++ codest (Was ja der fall ist) kannst du dein 2dimensionales Array mit:

    float (*pnewarray)[y] = new float [x][y];

    auch erst ( "zur runtime" wie du sagst) erstellen wenn du x und y ermittelt hast, beide (x und y) können also unbekannt sein
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.12.08, 07:07
  2. mehrdimensionales array
    Von Nadscha im Forum PHP
    Antworten: 12
    Letzter Beitrag: 17.07.07, 17:13
  3. Antworten: 5
    Letzter Beitrag: 30.04.07, 15:03
  4. mehrdimensionales Array
    Von TinaX im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.12.04, 16:40
  5. Mehrdimensionales Array ...
    Von LadySunshine im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 23.06.04, 11:28