Array



  • Hallo,
    sorry wegen dieser blöden Frage, aber wie kann ich die Anzahl der Elemente in einem Array in c++ herausfinden? In Java gibt es array.length(...) aber in c++??
    Mit sizeof bekomme ich ja nur die Größe in Byte. Das möchte ich ja nicht, sondern nur die Anzahl der Element bzw. der Einträge.

    Ist eine sehr einfache Frage, bitte verzeiht mir.



  • gar nicht



  • Hallo,

    es geht teilweise. Wenn du z.B. ein char-Array (also nen C-String hast):

    char array[20];
    //array irgendwie mit string füllen
    int len = strlen(array);
    

    Damit kriegst du aber "nur" die Anzahl Zeichen raus, nicht die gesamte Anzahl an verfügbaren Plätzen!

    Oder wenn du das Array direkt vor der Nase hast, klappt auch das:

    int array[7];
    
    int elements = sizeof(array)/sizeof(int));
    

    Das geht aber nicht, wenn du z.B. das Array als Parameter in ne Funktion reinkriegst und das dann rausfriemeln willst.

    Ergo: Du musst dir merken, wie groß dein Array ist.

    MfG

    GPC



  • Was kann ich dann tun? Ich übergebe meiner Methode verschiedene Arrays mit einer verschiedenen Anzahl an Elementen. Diese sollen in einer Schleife alle durchlaufen werden. Das ist sehr wichtig.
    Garnicht oder geht nicht ist ungenügend? Möchte micht jedesmal die Größe der Arrays mit übergeben müssen. Der Programmieraufwand wäre dann zu groß.



  • Dann musst du wohl bei Java bleiben. Oder du nimmst C++, da kannst du nen Vector benutzen.



  • Danke dir für diesen Tip GPC,
    das ist hilfreich. Danke 😉



  • Java VS. C++ schrieb:

    Was kann ich dann tun? Ich übergebe meiner Methode verschiedene Arrays mit einer verschiedenen Anzahl an Elementen. Diese sollen in einer Schleife alle durchlaufen werden. Das ist sehr wichtig.
    Garnicht oder geht nicht ist ungenügend? Möchte micht jedesmal die Größe der Arrays mit übergeben müssen. Der Programmieraufwand wäre dann zu groß.

    Mach dir das Leben nicht so schwer und verwende vorgefertigte Datenstrukturen, wie z.B. die aus der glib.
    Oder schreib dir selber was simples:

    typedef struct {
      void *mem;
      size_t size;
    } Array;
    
    //usw.
    


  • Wollt ich auch gerade vorschlagen 😉

    Intern wird das in Java ja auch nicht anders geregelt. Die kochen auch nur mit Wasser 😉



  • Java VS. C++ schrieb:

    Möchte micht jedesmal die Größe der Arrays mit übergeben müssen. Der Programmieraufwand wäre dann zu groß.

    Schreibaufwand sollte nie ein grund fuer Code Design sein...

    Kennst du den Spruch "When in Rome, do as the Romans do"? Wenn du C programmierst, solltest du vielleicht C Programmieren und nicht Java mit C Syntax...



  • Das Problem ist, daß es in C eigentlich gar keine Arrays gibt.

    Es gibt nur Zeiger (auf ints, ...) und nur der Compiler kennt
    die Syntax array[i].

    Dies ist aber gleichbedeutend mit *(array + i)



  • Javaner schrieb:

    Das Problem ist, daß es in C eigentlich gar keine Arrays gibt.

    Aaaaahja... 🙄



  • Javaner schrieb:

    Das Problem ist, daß es in C eigentlich gar keine Arrays gibt.
    Es gibt nur Zeiger (auf ints, ...) und nur der Compiler kennt
    die Syntax array[i].

    stimmt ja gar nicht 😞

    int x[10];
    

    das ist ein array und kein pointer.
    du kannst natürlich 'x' einem pointer zuweisen (der zeigt dann auf 'x') aber da ist schon ein kleiner unterschied 😉


Anmelden zum Antworten