Lange eines Arrays innerhalb einer Funktion abfragen. Moglich?
-
Ich will eine Funktion schreiben die einen Array bearbeitet, also ubergebe ich als Argument einen Zeiger auf diesen Array.
Die Funktion solte jedoch wissen wie lange dieser Array ist. Giebt es eine Moglichkeit die Arraylange inerhalb der Funktion zu Prufen oder muss ich die Lange as Arrays auch als Argument mitgeben?Das ist insofern problematisch, da ich in meine Funktion sehr viele Arrays ubergeben muss, was die Argumentenliste verdoppelt und unuberschaubar macht.
Hier ist ein Testprogram welches meine Frage illustrieren soll:
#include <stdio.h> #include <stdlib.h> void do_stuff_with_sequnce (unsigned char* sequence) { //Hier sollte ich die Lange vom Array 'sequence' Abfragen; //Das Resulat is immer '4', also offenbar der Speicherplatz des //Pointers.... printf("in do_stuff_with_sequnce(): sizeof(sequence)= %d\n\n",sizeof(sequence)); } int main(void) { const int SEQUENCE_LEN=11; unsigned char sequence[SEQUENCE_LEN]={'\x88','\x05','\x09','\x04','\x00','\x00','\x00','\x00','\xFF','\x00','\x00'}; do_stuff_with_sequnce(sequence); printf("in main(): sizeof(sequence)= %d\n\n",sizeof(sequence)); system("PAUSE"); return 0; }
Resultat:
**
in do_stuff_with_sequnce(): sizeof(sequence)= 4in main(): sizeof(sequence)= 11
Press any key to continue . . .
**Vielen Dank! (Bitte entschulding Sprachfehler)
-
nein innerhalb der funktion geht das nicht mehr weil nach nem pointer gecastet wird und du nur noch die grösse des pointers in byte zurückbekommst...
-
Windalf schrieb:
nein innerhalb der funktion geht das nicht mehr weil nach nem pointer gecastet wird und du nur noch die grösse des pointers in byte zurückbekommst...
Danke! Das habe ich befurchtet.
-
eine ähnliche frage wurde vor ein paar tagen gepostet, in dem thread kannst du eine alternative für statische arrays finden(dh für arrays, die nicht mit new erstellt werden).