Announcement

Collapse
No announcement yet.

Mehrdimensional Arrays mit unterschiedlichen Datentypen je Spalte

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

  • Mehrdimensional Arrays mit unterschiedlichen Datentypen je Spalte

    Hallo zusammen,

    ich habe mal wieder eine interessante Frage

    Also ich habe folgendes Array:

    int Disp_TxtArr[10][2];

    Nun ist aber mein Problem, dass ich in der ersten Spalte einen Integer und in der 2 Spalte eine Zeichenkette (char) ablegen möchte. Was müsste ich bei der Deklaration ändern, damit ich je Spalte unterschiedliche Datentypen nutzen kann.

    Denn Ziel soll es sein, die foglenden Informationen zu speichern:

    1;Taste Bitte
    2;Zugangskontrolle
    4;Test

    Der erste Wert ist Int, der zweite n Char.

    Ich danke Euch.

  • #2
    Man kann es entweder mit einen array aus void Pointern lösen, <br>
    <br>
    void* ArrayName[10][2];<br>
    <br>
    oder man könnte es mit ( das ist von der verwendeten Bibliothek abhängig ) mit einen Array Template Klasse lösen. In VC so eine Klasse CArray< ... >.<br>
    <br>
    mfg<br>
    Simon Rot

    Comment


    • #3
      Hallo,

      das klingt doch schonmal gut, aber wo sage ich dann, dass in der 1. Spalte int als Datentyp gilt und in der 2. char? Hier steht ja nur void. Ich verstehe das noch nicht so ganz.

      MsfG
      Sebastian ][agedor

      Comment


      • #4
        void* ist ein pointer auf den Grunddatentyp. Ein void-Pointer kann auf alles Zeigen! Und da bekannt ist, in welchem Datentyp die Dimension des Arrays ist kann man die auszulesenden daten einfach in die Daten des entsprechenden Types casten.<br>
        <br>
        void* MyArray[10][2];<br>
        MyArray[0][0] = new int;<br>
        MyArray[0][1] = new char[];<br>
        <br>
        iNumber = (int)MyArray[0][1];<br>
        <br>
        <br>
        Wenn ich das richtig verstanden habe sollte es so funktionieren.<br>
        Aber dann könnte man auch eine struct erstellen, die einen int und eine char* beinhaltet und ein einfaches array von diesem Datentyp erstellen:<br>
        <br>
        <pre>
        struct MyData
        {
        int iNumber;
        char cName;
        }

        ...

        MyData DataArray[10];

        ....

        int iGNumber = DataArray[1].iNumber;
        <pre>
        <br>
        <br>
        Ich hoffe das hilft etwas

        Comment


        • #5
          Besser den MAP Container aus der STL benutzen.

          Siehe Hilfe zu den Themen

          STL
          ma
          Christian

          Comment


          • #6
            Danke Simon,

            hat mir sehr geholfen. Nun muss nur noch der Compiler mitmachen. Denn der ist sehr sehr alt. Das soll nämlich für ein Terminal-Programm sein und das kann nur MS VC 1.5.

            Ich probiers jetzt mal aus und wenn es nicht geht, frag ich einfach nochmal.

            Recht herzlichen Dank. Sebastia

            Comment


            • #7
              Noch eine Frage: Ich habe das nun ausprobiert, aber der Compiler meldet mir Folgendes:

              src\funktion.c(80) : error C2282: 'MyData' is followed by 'DataArray' (missing ','?)

              Ich habe es so deklariert und auch verstanden, denn das ist ähnlich mit Pascal:

              struct MyData
              {
              int iNumber;
              char cName[25];
              };
              MyData DataArray[10];

              Aber er stört sich an der letzten Zeile. Was nun?

              MfG
              Sebastian ][agedor

              Comment


              • #8
                Verwendest du C oder C++ ??<br>
                <br>
                Wenn C++ dann versuch mal folgendes:<br>
                <pre>
                MyData* pMyData = new MyData[10];
                <pre>
                <br>
                wenn C dann musst du es mit malloc und free machen<br>
                <pre>
                MyData* pMyData;
                pMyData = malloc( sizeof( MyData ) * 10 );
                memset( pMyData, 0, sizeof( MyData ) * 10 );
                ...
                free( pMyData );
                <pre>
                <br>
                ich hoffe, dass es dann funktioniert!!<br>
                mfg
                <br>Simon Rot

                Comment


                • #9
                  Hallo,

                  ich verwende C. Bin noch ein ziemlicher Anfänger in C, behaupte ich einfach mal.

                  Ich habe es so probiert, aber new kennt er nicht. Ich danke Dir auf jeden Fall für Deine Bemühungen und vielleicht fällt Dir noch was ein.

                  Sebastia

                  Comment


                  • #10
                    Das mit "new" kann nur mit C++ funktionieren! Die 2. lösung sollte aber funktionieren!<br>
                    <br>
                    Simo

                    Comment


                    • #11
                      Wenn es reiner C-Code sein soll (oder ist) muss Du folgendes schreiben:

                      struct MyData { int iNumber; char cName[25]; };

                      struct MyData DataArray[10];

                      Erst mit C++ kann das 2. struct weggelassen werdne
                      viel Spaß
                      Stefa

                      Comment

                      Working...
                      X