Array Elemente zählen

EddieG

Erfahrenes Mitglied
Hi,
ich habe ein kleines Problem und werde nicht wirklich fündig.
Ich möchte die anzahl der elemente innerhalb meines Array's ausgeben lassen. Bekomme jedoch ein Falsches Ergebnis
Code:
int werte[2][3] = {
{4,4,5},{0}
        
    };
    
    cout << "laenge von array"<<sizeof(werte)/sizeof(int);
Die ausgabe ist 6 aber wie wir sehen, sind es bloß 4.
Gibt es noch eine andere möglichkeit als sizeof ?
 
Meinst du die Menge der von dir initialisierten Variablen?
Also ein int wird automatisch mit 0 initialisiert. (soweit ich weiß) Deshalb gibt es glaube ich keine Funktion, die das überprüfen kann, ob eine Variable gesetzt oder ungesetzt ist.
 
Hi, du wirst nicht darum kommen "leere" Felder mit bestimmten Zahlen oder Zeichen vorbelegen zu müssen und diese hinterher beim Zählen auszusortieren.

Nur weil du die entsprechende Arrayposition nicht belegt hast, heißt es nicht, dass sie nicht existiert. Ein Array ist ein Verbung von aufeinanderfolgenden Speicherstellen. Nun ist der Speicher zwar reserviert für das Array, aber kann irgendwelche Werte enthalten, sein es Werte, die vorher mal von irgendeinem anderen Programm an diese Speicherstelle geschrieben wurden oder einfach nur da sind, das ist eigentlich auch egal. Jedenfalls werden diese auch gezählt.
 
Ich hätte dennoch eine kleine Frage zu array's im allgemeinen.
Ist es nicht möglich, einen array innerhalb einer Methode zu erstellen? Der Feldindex ist der ein Wert, welcher der Methode übergeben wird.

ich habe so etwas versucht es geht aber nicht.
Code:
#include <iostream>

using namespace std;
class Berechnung{

public:
    void setiArrayFelderAnz(int a)
    {
        if(a>0)
        int iArr[a];

        cout << "die Felder Anzahl ist: "<< (sizeof(iArr)/sizeof(int));
        cout << a;
    }
    
};

void main()
{
    Berechnung *integer = new Berechnung;
    int wert;
    cout << "Bitte gegeben Sie die Array größe ein: " << endl;
    cin >> wert;
    *integer->setiArrayFelderAnz(wert);
    //bla
    system("pause");
}

Konstanter Ausdruck erwartet
Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
'iArr': Unbekannte Größe
'iArr': nichtdeklarierter Bezeichner
''unknown-type'': Ungültiger sizeof-Operand
Ungültige Dereferenzierung.
 
Dynamische Arrays können nicht auf dem Stack erstellt werden, das Stackframe kann im Prolog sonst ja nicht erstellt werden. Die Grösse des Arrays muss zu Kompilierzeit bekannt sein.

Wenn du es dynamisch erstellen willst musst du new verwenden:
int* pArray = new int[a];

...
delete [] pArray;
 
Zurück