Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Länge eines Arrays bestimmen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.11.2004, 11:51 Uhr
~chris123
Gast


hallo,
wie kann ich die Länge eines Arrays herausfinden?

Bsp:


C++:
int Zahlen[]={0,1,2,3,4,5};




Jetzt möchte ich in eine Variable (size) welche mir die Anzahl der Zahlen,
die im Array stehen zurückgibt. In diesem Fall sollte also size = 6 sein.

Kann mir einer schreiben wie das geht bitte ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.11.2004, 11:57 Uhr
~mike
Gast


Hi!
Forumsuche
sizeof(Zahlen) / sizeof(int)

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.11.2004, 12:13 Uhr
~chris123
Gast


danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.11.2004, 22:14 Uhr
ao

(Operator)


Oder sizeof (Zahlen) / sizeof (*Zahlen)

Das funktioniert auch dann noch, wenn man den Typ von Zahlen [] von int in irgendwas anderes ändert.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.11.2004, 15:07 Uhr
~Pler
Gast


Das ganze duerfte aber bei char-Array hinter einem Zeiger nicht mehr funktionieren:

char*
ptr;

ptr = malloc( ... );
gets( ptr);

sizeof( ptr ) <-- Das gibt die Groesse des Zeigers und nicht des Arrays wieder!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.11.2004, 15:46 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von ao:
Oder sizeof (Zahlen) / sizeof (*Zahlen)

Das dürfte nichts werden, weil *Zahlen nur dann ein gültiger Ausdruck ist, wenn Zahlen ein Zeiger ist, und dann ist sizeof(Zahlen) nicht mehr die Länge des Arrays, sondern nur die Größe des Zeigers. Was dagegen geht, ist

C++:
sizeof(Zahlen) / sizeof(Zahlen[0])


Und wenn man schon dabei ist, kann man auch gleich

C++:
#define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0]))

/* ... */

int Zahlen[10];
size_t laenge = ARRAY_LENGTH(Zahlen);


schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.11.2004, 09:35 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von 0xdeadbeef:

Das dürfte nichts werden, weil *Zahlen nur dann ein gültiger Ausdruck ist, wenn Zahlen ein Zeiger ist, und dann ist sizeof(Zahlen) nicht mehr die Länge des Arrays, sondern nur die Größe des Zeigers. Was dagegen geht, ist


Was soll an ao's variante denn nicht gehen? Klar geht das.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 21.11.2004 um 09:35 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: