sizeof auf ein Array anwenden?
-
Hi,
ist es möglich bzw. C Standard den sizeof Operator auch auf ein Array anzuwenden?
Habe darüber immer wieder widersprüchliches gelesen. Die einen sagen es geht die anderen nicht. Viele sind auch der Meinung man braucht es deshalb nicht, weil einem ja die Dimensionen eines Arrays in der Regel bekannt sind. Obwohl ich diese Meinung nicht ganz Teile, denn ich kann ja auch schreiben
array1[]={1,2,3,4}; oder array2[]={1,2};
statt
#define MAX 4 array[MAX]={1,2,3,4};
Habe es im Visual C++ Studio ausprobiert und da geht es, aber weis nicht ob dies jeder andere Compiler auch versteht?!
Kann mir da jemand weiter helfen auf welche Elemete ich den sizeof Operator nach Standard C anwenden kann bzw. darf? Habt ihr da irgendwelche Erfahrungen schon damit gemacht?
mfg Sven
-
Afaik geht das - und liefert die Gesamtgröße des Arrays in Byte zurück.
(und als Operand von sizeof kannst du entweder einen Ausdruck (im einfachsten Fall eine Variable) oder einen Typbezeichner angeben)
-
Das geht so lange, wie die Definition des Arrays im Kontext des Moduls bekannt ist (also z.B. nicht, wenn ein Array aus ner Funktion zurückgegeben wird oder als extern ohne Größenangabe deklariert ist).
char *ary[] = { "eins", "zwei", "drei", "vier", "fuenf" }; int count = sizeof(ary)/sizeof(char*);
ist IMHO sogar recht gängig.
-
Jups Danke für die Hilfe, dann kann ich es ja ohne bedenken verwenden.
IDS