Announcement

Collapse
No announcement yet.

Mehrdimensionale Arrays auf dem Heap

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrdimensionale Arrays auf dem Heap

    Guten Abend,

    ich möchte größere Datenmengen, als Mehrdimensionales <br>
    Array auf dem Heap ablegen. <br>
    der Versuch mit:<br>
    char *Buffer = new char[200][200];<br>
    erzeugt einen compiler fehler <br>
    <br>
    weis jemand eine Lösung ?<br>

    Danke im voraus

    Maik

  • #2
    steht da einfach nur "Compiler Fehler", oder sagt der Compiler auch, wo ihn der Schuh drückt
    Günther

    Comment


    • #3
      genau gesagt:

      [C++ Fehler]Unit1(11):E2034 Konvertierung von 'char(*)[200]' nach 'char *' nicht möglich

      vieleicht gibt es noch eine andere möglichkeit ?

      Gruß Mai

      Comment


      • #4
        char *Buffer = new char[40000];

        Aber dann mußt Du die Zugriffe auf *Buffer anders aufbauen. Was willst Du damit machen
        Günther

        Comment


        • #5
          <p>Um ein mehrdimensionales Array dynamisch zu erzeugen:</p>
          <pre>
          // Allocate
          char **Buffer = new char *[200];

          for(int i = 0; i < 200; ++i)
          Buffer[i] = new char[200];

          // Delete
          for(i = 0; i < 200; ++i)
          delete [] Buffer[i];

          delete [] Buffer;
          </pre&gt

          Comment


          • #6
            An Günther

            die möglichkeit kenne ich, ist aber in meinem Fall<br>
            etwas ungünstig zu handhaben.<br>

            Ich wollte im Arry<br>
            Hashtabellen von cast ablegen !

            Comment


            • #7
              An Andreas

              Sieht etwas wild aus<br>
              kann man damit mit den normalen<br>
              offset operatoren, bzw. der normalen Syntax (Buffer[][])<br>
              arbeiten ?<br>

              Bin mir meist nicht sicher ob die Daten<br>
              auch dahin kommen wo sie hin sollen

              Comment


              • #8
                <p>Die Art und Weise, wie Du den pointer dereferenzierst, bleibt Dir überlassen...</p>
                <pre>
                // Allocate
                char **Buffer = new char *[200];

                for(int i = 0; i < 200; ++i)
                Buffer[i] = new char[200];

                strcpy(Buffer[0], "Hallo");

                // Delete
                for(i = 0; i < 200; ++i)
                delete [] Buffer[i];

                delete [] Buffer;
                </pre>
                <p>Wir haben ein "Hallo" in das erste Element geschrieben. Nun können wir folgendes tun:</p>
                <pre>
                "Buffer[0][1]" -> liefert 'a'
                "(*Buffer)[1]" -> liefert 'a'
                "*(*Buffer + 1)" -> liefert 'a'
                </pre&gt

                Comment


                • #9
                  ja, es funktioniert alles,<br>

                  herzlichen Dank für die Antworten :

                  Comment

                  Working...
                  X