wie viele elemente hat das array?
-
Hi, gibt es in C einen Befehl ähnlich wie UBOUND() oder GetUpperBound(0) um herauszubekommen wieviele Elemente ein Array hat?
Falls nicht, gibt es dazu eine Methode?
-
wenn die grösse zur compiletime bekannt ist, geht's mit 'sizeof(arrayname)/sizeof(typ)'. sonst leider nicht.
-
@Undertaker deine Version ist leider nicht portabel.
Besser:
sizeof(array)/sizeof(array[0])
Viele Grüße,
Patrick
-
-
Portabilitätsprobleme sollte keine variante haben. Dummie's Variante hat den Vorteil, auch bei geändertem datentyp des Arrays zu funktionieren, Deine (net, ten, vista, pale, Undertaker) nicht.
greetz, Swordfish
-
Swordfish schrieb:
Dummie's Variante hat den Vorteil, auch bei geändertem datentyp des Arrays zu funktionieren, Deine (net, vista, pale, Undertaker) nicht.
typedef unsigned char ELEMENT_TYPE; // <--- bitte ändern ELEMENT_TYPE v[100]; size_t v_size = sizeof(v)/sizeof(ELEMENT_TYPE);
nicht?
edit: dummies version hat aber einen echten vorteil, sobald man ein makro daraus macht:
#define NUM_ELEMENTS(a) (sizeof(a)/sizeof(*a)) // geht fast immer
-
int foo[ barnum ]; // <-- bitte ändern ^^ size_t = sizeof( foo ) / sizeof( int );
greetz, Swordfish
-
Swordfish schrieb:
Deine (net, vista, pale, Undertaker) nicht.
Da fehlt ein Name :p
-
mikey schrieb:
Swordfish schrieb:
Deine (net, **ten ,**vista, pale, Undertaker) nicht.
Da fehlt ein Name :p
Sorry, korrigiert!
greetz, Swordfish
-
sizeof(array)/sizeof(array[0])
Kommt bei arrays mit char* nicht so gut!
sizeof(array) / sizeof(char *)
Gruß
Michael
-
bloodshower schrieb:
sizeof(array)/sizeof(array[0])
Kommt bei arrays mit char* nicht so gut!
...weil!?
greetz, Swordfish
PS: Die frage war: "Wie viele Elemente hat das Array?"