Tabellenlänge ermitteln

dengel

Mitglied
Hallo,
ich möchte mit einer universellen Funktion auf Tabellen (Arrays) mit verschiedenen Längen zugreifen. Die Länge der Tabelle kann ich beim Fnktionsaufruf nicht als Übergabeparameter mitgeben, da mir zum Zeitpunkt des Funktionaufrufes dieser Wert noch nicht bekannt ist.
Der zweite Punkt ist der, dass zum Zeitpunkt des Funktionsaufrufes auch nur die Adresse des Arrays zur Verfügung steht.

Gibt es eine Standardfunktion, in C++ natürlich, die mir die Länge eines Arrays ermittelt, auch wenn ich nur die Adresse des Arrays zur Verfügung habe.

Genial wäre es, wenn es eine Standardfunktion geben würde, die mir auch noch die Länge des einzelnen Arrayfeldes oder die gesamte Länge (in Byte) des Arrays zurückgibt.

PS. "sizeof" funktioniert nicht, da ich den Variablenname nicht zur Verfügung habe.

Gruß dengel.
 
Nein, eine solche Funktion gibt es in C/C++ nicht. Wenn du dich auf eine bestimmte Implementierung der Standardbibliothek beschränkst oder eigene Funktionen für new/delete new[]/delete[] (bzw. das äquivalente malloc/calloc usw.) schreibst, könntest du durch spezielle Funktionen zu einem Pointer evtl. herausbekommen wieviel Speicher für den Bereich auf den der Pointer zeigt reserviert wurde.

Allerdings könntest du um dieses Problem zu umgehen das letzte Element des Arrays mit einem speziellen Wert belegen (so wie es ja auch mit C-Strings gemacht wird). Z.B. wenn du ein Array von Pointern hast, dann würde sich der Wert NULL anbieten.

Die Größe der einzelnen Elemente des Arrays ist allerdings vom Typ abhängig, den mußt du auf jeden Fall wissen (wie willst du sonst irgendwas sinnvolles mit dem Array machen?).
 
Zurück