Länge von mehrdimensionalem Datenfeld



  • Hallo zusammen,

    ich möchte folgendermaßen eine Matrix in einem mehrdimensionalem Array speichern:

    int a [10] [10] =  {{1,2,3},{4,5,6 }};
    

    und dann seine Länge abfragen:

    printf(a.length);
    

    Bekomme dabei doch die Fehlermeldung

    Fehler: Abfrage des Elementes »length« in »a«, das vom Nicht-Klassentyp »int [10][10]« ist

    Kann mir jemand sagen, was ich da falsch mache? Ich habe es testweise auch mit a[10][10].length versucht, was aber auch nicht geklappt hat.

    Vielen Dank,

    Andi



  • a ist einfach nur ein int-array und hat keine methode array. Deins sieht aus wie D und nicht C++. Welche Programmiersprache nutzt du oder willst du nutzen?

    schirrmie



  • ich möchte c++ nutzen 🙂

    Die Array-Länge brauche ich genauergesagt, weil ich mit einer for-Schleife das Array durchlaufen möchte. Müsste ja eigentlich ein Standartproblem sein, aber irgendwie klappt es nicht...



  • Nö, ein Standardproblem ist das nicht.
    Normalerweise nutzt man dafür Containerklassen.(z.B. vector)
    Du kannst mit

    sizeof(a)/sizeof(int)
    

    feststellen wieviel int's du in das array bekommst. Mehr aber auch nicht.



  • Du kannst dein Array natürlich travesieren... siehe bsp.

    #define A 10
    #define B 10
    
    int Array [A] [B] =  {{1,2,3},{4,5,6 }};
    
    for(int a=0;a <A; ++a)
      for(int b=0; b< B; ++b)
        printf("%i",Array[a][b]);
    

    Problem ist hatl, das alle int deine 2Dim array durchlaufen werden, egal ob die wert initialisert sind oder nicht...

    Wenn du ein dynamische Array willst, musst es anderes machen...



  • nimmt liber std::vector


  • Mod

    BorisDieKlinge schrieb:

    Du kannst dein Array natürlich travesieren... siehe bsp.

    #define A 10
    #define B 10
    
    int Array [A] [B] =  {{1,2,3},{4,5,6 }};
    
    for(int a=0;a <A; ++a)
      for(int b=0; b< B; ++b)
        printf("%i",Array[a][b]);
    

    Problem ist hatl, das alle int deine 2Dim array durchlaufen werden, egal ob die wert initialisert sind oder nicht...

    Wenn du ein dynamische Array willst, musst es anderes machen...

    keine defines bitte.
    So etwas wie partiell initialisierte Arrays gibt es nicht (abgesehen nat. von der Zeit während der Initialisierung).

    int Array [10] [10] =  {{1,2,3},{4,5,6 }};
    const int A = sizeof Array / sizeof *Array;
    const int B = sizeof *Array / sizeof **Array;
    for(int a=0;a <A; ++a)
      for(int b=0; b< B; ++b)
        printf("%i",Array[a][b]);
    

Anmelden zum Antworten