Array

Hallo,
ich will ausrechnen, wieviel zahlen im array stehen

int zahl[]={1,5,6,8,12,345,7,23};
int sum=0;

for (int i=0; i???; i++)
{
sum++;
cout

Hallo.

Wenn nicht gerade ‚zahl.length()‘ verwendet werden soll dürfte ‚for (int i=1;;i++)‘ bereits ausreichend sein.

HTH
mfg M.L.

Wenn nicht gerade ‚zahl.length()‘ verwendet werden soll dürfte
‚for (int i=1;;i++)‘ bereits ausreichend sein.

Es gibt doch in C gar kein ‚zahl.length()‘… Versteh deine Antwort nicht…

Ich würde es so machen:

int zahlen[] = {1, 2, 3, 4, 5}

int anzahl_eintraege = sizeof(zahlen) / 4;

Das geht aber nur für 'int’s, da die bei bei 32-Bit Maschinen eine Größe von 4 Bytes haben. Für andere Datentypen musst die 4 entsprechend austauschen.

Ich würde es so machen:

int zahlen[] = {1, 2, 3, 4, 5}

int anzahl_eintraege = sizeof(zahlen) / 4;

Das geht aber nur für 'int’s, da die bei bei 32-Bit Maschinen
eine Größe von 4 Bytes haben. Für andere Datentypen musst die
4 entsprechend austauschen.

Warum dann nicht:

int anzahl\_eintraege = sizeof(zahlen)/sizeof(int);

bzw. um es einfacher wartbar zu machen:

typedef int array\_type;
array\_type zahlen[] = {1, 2, 3, 4, 5};
int anzahl\_eintraege = sizeof(zahlen)/sizeof(array\_type);

Hallo,
ich will ausrechnen, wieviel zahlen im array stehen

int zahl[]={1,5,6,8,12,345,7,23};

Eine dumme Frage: wo kommen die Werte her? Wäre es nicht möglich, mit ein paar Zeilen Code eine Datei als Datenquelle zu verwenden, die einzelnen Werte in einen STL-vector einzulesen, ind dann einfach vector::size() zu verwenden? In Anbetracht der Tatsache, dass du sowieso C++ verwendest, sind C-Arrays nicht unbedingt erste Wahl.

typedef int array_type;
array_type zahlen[] = {1, 2, 3, 4, 5};
int anzahl_eintraege = sizeof(zahlen)/sizeof(array_type);

Oder so, ja!

Greetz, Chris

Hallo,

typedef int array_type;
array_type zahlen[] = {1, 2, 3, 4, 5};
int anzahl_eintraege = sizeof(zahlen)/sizeof(array_type);

nööö, geht noch anders :wink:

 #define ARRAY\_SIZE(x) (sizeof(x)/sizeof(\*(x)))
 ...


 int izahl[] = {1, 2, 3, 4, 5};
 int ianzahl = ARRAY\_SIZE(izahl);

 double fzahl[] = {1.1, 2.2, 3.3, 4.4, 5.5};
 int fanzahl = ARRAY\_SIZE(fzahl);

 ...

geht in den „meisten Fällen“ :wink:

CMБ

1 Like

falls das Array extern ist
Hallo Leo,

die version mit ARRAY_SIZE ist immer zu empfehlen.

Nur wenn das array als pointer kommt, oder es nur extern declariert ist, dann gibt es noch die möglichkeit eines End-Delimiters, z.B. 0, -1 oder INT_MIN, aber halt eine Zahl die sonst nicht verwendet wird.

extern int zahl[];
#define INT_END_OF_ARRAY INT_MIN
int sum=0;

for (int i=0; zahl[i] != INT_END_OF_ARRAY; i++)
{
sum++;
… += zahl[i];
cout