Funktion: max. Feldindex

abcd_hallo

Mitglied
Hallo,

ich suche eine Funktion, die mir von einem Feld mit unbekannter größe den maximal möglichen Index ausgibt, So wie die Funktion UBound in Visual Basic

thx
 
Also Felder sind immer statische Datentypen in C also haben sie immer die gleiche Größe
Bsp.:

Code:
#define SIZE 5
int main(void){
  char feld[SIZE];
  for(int i = 0; i < SIZE; i++)
    feld[i] = 'a';
}

Also bekommst du mit SIZE - 1 den letzten Index deines Feldes.

Wenn du dynamische Datentypen verwenden willst
kannst du:
1.) in C dir eine Liste zusammenbauen oder
2.) in C++ die Container vector, queue oder dequeue aus der STL hernehmen.

Bsp.: für vector
Code:
#include <vector>
using namespace std;
int main (void){

  vector<char> v;
  for(int i = 0; i < 5; i++)
    v.push_back('a');
}

Mit v.size() - 1 bekommst du den größtmöglichen Index des Vektors ...

Gruß

RedWing
 
Wenn du keine C++-Klasse nehmen möchtest, geht auch die "konventionelle" Methode für ein dynamisches Array:

Code:
int *array; //int Array als Zeiger deklarieren

array = new int[SIZE]; //Größe auf SIZE setzen, letzter Index ist wieder SIZE-1

//benutzen

delete [ ] array; //Speicher freigeben, nicht vergessen!

//array nach Bedarf wieder verwenden
 
Das Problem ist, das ich eine Funktion habe und bekomme von irgendwo anders (das ich nicht kenne) eine ByteArray übergeben, und jetzt wollte ich herausfinden wie groß das ist.

Aber trotzdem danke für eure Hilfe
 
Da musst du als zusätzlichen Parameter die Anzahl übergeben. Oder du definierst einen "Stopp"-Wert wie -1 oder 0, analog zur Endnull '\0' bei denn sogenannten C-Strings (nicht der beste Name, seit es echte Stringklassen gibt) bzw. char-Arrays.
 
Zurück