laenge eines (int)Arrays
-
Hi,
Eine kleine Ergänzung noch.
Ich würde es so schreiben!int array[4]; sze=sizeof(array) / sizeof(int);
oder bei anderen Datentypen halt denn Entsprechenden Datentyp in sizeof schreiben. Ist meiner Meinung nach einfach besser Programmiert.
MfG schirrmie
-
Ergänzung zu schirrmie
Möglich wäre auch folgendessize_t n = sizeof(array) / sizeof(array[0]);
Aber bitte nicht wie /bin/bash0R, da Typen von Plattform zu Plattform unterschiedlich gross sein können.
-
jo thx, da haette man auch selber drauf kommen MÜSSEN ^^
naja, bin halt java-kind, da gibts fuer fast alles schon funktioenen .p
cu....
-
ok ok, sorry, das ist mir klar -> datentypgröße auf verschiedenen maschinen.
bin von der üblichen größe eines int ausgegangen und die ist 4Byte.
Das ist natürlich dann nicht sehr portabel.
-
frage:
funktioniert das "sizeof" nur bei statischen arrays, oder bei dynamischen auch?
(oder wird bei dynamischen die größe des Pointers ausgegeben?)mfG (c)h
-
Bei "dynamischen Arrays" (also 'int *p = malloc(...)' oder so) passiert genau das, was Du vermutest, und er holt sich die Größe des Zeigers.
Es gibt allerdings neuerding (seit 99) in C Arrays, deren Länge zur Compilezeit noch nicht feststehen muß. Also so etwa:
#include <stdlib.h> int main() { int r = rand()%123; int arr[r]; return sizeof r/sizeof *r; }
Da funktioniert dann sizeof wie gewünscht.
-
Ähmm, sollte es nicht eher
sizeof arr/sizeof *arr
heissen?
-
@Daniel E.:
DAS geht bei mir (noch) nicht!mfG (c)h
-
TactX: Äh, doch n'türlich. Gut, daß du das richtiggestellt hast. Danke.
-
nimm2 schrieb:
Hi, wollt mal fragen, ob/wie man die länge eines Arrays (Integer) herausfinden kann???
also wenn ich z.B.
int array[5];mache, gibt es dann eine Funktion, die dir als rückgabewert 5 gibt,
etwa wie int laenge = len(array);cu und thx...
Ich frag mich bei der Frage immer (ja diese Frage war schon öffter da), warum man sich die Größe nicht einfach merkt, wenn man sie doch eh schon weiß.