ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-
Hallo!
Die Anzahl der Elemente eines Arrays läßt sich einfach mit
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
feststellen.
Wende ich dieses Macro auf ein Array von Zeigern an, etwa
char *choices[] = { "Choice 1", "Choice 2", "Choice 3", "Choice 4", "Exit", (char *)NULL, }; /* ... */ int n_choices = ARRAY_SIZE(choices);
ist n_choices stets 4.
Was mache ich falsch, gibt es eine alternative zu diesem Macro?
Danke!
Gruß
Michael
-
Du mußt irgendwas falsch machen. Bei mir kommt 6 raus.
-
was macht eigentlich dieses /sizeof(a[0]) ??? ich mein ist die berechnung net total falsch wenn alle einträge 255 zeichen haben und eintrag 0 nur 3 zeichen hat?!?!
-
*** schrieb:
ich mein ist die berechnung net total falsch wenn alle einträge 255 zeichen haben und eintrag 0 nur 3 zeichen hat?!?!
Moin!
Nein, da es sich ja um ein Array von Zeigern handelt,
ist sizeof(a[0]) die Groesse eines Pointers; wie lang ein
Eintrag ist tut nichts zur Sachegruß,
walker
-
Ah gut zu wissen, wer hätte das gedacht