Elemente eines Arrays von beliebigem Datentyp zählen
-
Topic = Question.
while(a[i]!='\0') i++;
funzt ja nur bei char arrays.
undsizeof(a)/sizeof(char*)
ist wenn ich ein array aus pointern habe ziemlich unschön.
-
F1F1 schrieb:
Topic = Question.
while(a[i]!='\0') i++;
funzt ja nur bei char arrays.
Falsch, es funktioniert bei nullterminierten Strings. Der äquivalente Algorithmus funktioniert natürlich bei jedem nullterminierten Array, das ist keine spezifische Eigenschaft von char-Arrays.
sizeof(a)/sizeof(char*)
ist wenn ich ein array aus pointern habe ziemlich unschön.
Was ist daran unschöner als z.B. wenn du ein Array aus ints hast?
Du vermischst hier übrigens zwei grundverschiedene Dinge. Das erste zählt zur Laufzeit die Elemente in einem Array mit einer bestimmten Endemarkierung, das andere gibt dir zur Übersetzungszeit die Größe eines deklarierten Arrays. Das sind untereinander keine Alternativen.
-
F1F1 schrieb:
Topic = Question.
while(a[i]!='\0') i++;
funzt ja nur bei char arrays.
undnö, egal was a[] für'n typ von array ist, jedes i++ geht zum nächsten element (z.b. bei float 4 bytes weiter) und findet die 0
-
net schrieb:
F1F1 schrieb:
Topic = Question.
while(a[i]!='\0') i++;
funzt ja nur bei char arrays.
undnö, egal was a[] für'n typ von array ist, jedes i++ geht zum nächsten element (z.b. bei float 4 bytes weiter) und findet die 0
So leicht ist es eben nicht, denn wie Bashar schon richtig gesagt hat muss das Array für diesen Fall 0 Terminiert sein. Wenn ich z.B. schreibe:
char *a[]
komme ich damit nicht sonderlich weit.
Mir geht es ja darum, eine Methode zu finden die Anzahl der Elemente im Array zu ermitteln - unabhängig davon, wie das Letzte Element im Array aussieht.
-
F1F1 schrieb:
So leicht ist es eben nicht, denn wie Bashar schon richtig gesagt hat muss das Array für diesen Fall 0 Terminiert sein.
klar, der code ist nur dazu zu gebrauchen, eine 0 zu suchen. auch wenn das array grösser ist, hört's bei der ersten 0 auf, ist also zum rausskriegen der länge ungeeignet.
F1F1 schrieb:
Mir geht es ja darum, eine Methode zu finden die Anzahl der Elemente im Array zu ermitteln - unabhängig davon, wie das Letzte Element im Array aussieht.
wenn man selber arrays anlegt geht ja 'sizeof()' (haste schon geschrieben hier irgendwo). wenn man das array als pointer an eine funktion übergibt, geht diese information aber verloren d.h. man muss die länge mit übergeben. bei dynamisch geholtem speicher (malloc, new usw.) weisste ja vorher, wieviel du angefordert hast, musst es dir also irgendwo merken.