1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Länge eines Arrays bestimmen

  • bbking78
  • 1. Juni 2005 um 14:47
  • Unerledigt
  • bbking78
    2
    bbking78
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 1. Juni 2005 um 14:47
    • #1

    hallo,

    hab mal eine dämliche Frage:
    wie kann ich die Länge vom Array list bestimmen? habs mal so, wie es unten steht, gemacht, aber da passt irgendwas nicht, weil die Schleife nicht nur 6x durchlaufen wird...

    hat jemand eine Idee, wie ichs besser machen könnte?

    danke schon mal im voraus

    Code
    BTree<T>::BTree(T list[])
    {
    	int c = 1;
    	int i = 0;
    	while(c)
    	{
    		if (list[i])
    		{
    			BTree::add(list[i]);
    			cout << "einzufügen: " << list[i] << endl;
    			i++;
    		}
    		else
    		{
    			c = 0;
    		}
    	}	
    }
    Alles anzeigen

    Das Array wird mit

    Code
    int L[] = {5,7,3,9,1,2};
    BTree<int> myTree(L);


    initialisiert und an die Funktion übergeben.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 1. Juni 2005 um 14:57
    • #2
    Zitat von bbking78

    wie kann ich die Länge vom Array list bestimmen?


    Gar nicht, da list kein Array, sondern ein Pointer ist (Objekte, die in Funktionsargumenten als Array deklariert werden, werden in Wirklichkeit immer in Pointer umgeschrieben). Und es gibt keine Möglichkeit, von einem Pointer rauszufinden, wie groß das Array ist, auf dessen Anfang er zeigt.
    Du wirst wohl die Länge des Arrays als zweites Argument übergeben müssen, wenn es dir wichtig ist, mehrere Werte auf einmal eintragen zu können.

    *plantsch*

  • bbking78
    2
    bbking78
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 1. Juni 2005 um 15:06
    • #3

    ahaaa....danke!

    das Problem ist, die Funktionen und ihre Parameter sind vorgegeben, so wie ichs vorhin gepostet habe...
    Nur dann frag ich mich, wie wir den Baum mit den Werten auffüllen sollen, wenn wir nicht wissen, wie viele Elemente in der Liste sind...:confused::confused:

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 1. Juni 2005 um 16:11
    • #4

    Vielleicht ist die Idee, daß ein bestimmter Wert wie etwa 0 das Ende des Arrays anzeigen soll. Dann wäre dein Code korrekt, der tut nämlich genau bis zur ersten 0 suchen.
    Näheres muß dir deine Angabe oder dein Lehrer/Professor/whatever verraten.

    *plantsch*

  • bbking78
    2
    bbking78
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 1. Juni 2005 um 17:56
    • #5

    wo hast du die Glaskugel her? :verycool:
    genau das war die Antwort vom Tutor, abschliessende 0 terminiert die Liste...

    anyway, danke für deine Zeit!

  • bbking78
    2
    bbking78
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 1. Juni 2005 um 18:55
    • #6

    hm, eine Frage hätte ich trotzdem noch:

    wenn ich eine Funktion hab, die einen Pointer auf einen unbestimmten Typ zurückgibt, wie muss ich dann die Funktion schreiben, damit es klappt?

    Code
    template <class T>
    T* BTree<T>::getValues(void)
    {
    	T aListe[1];
    	 aListe[0] = 5;
    	 return aListe;
    }

    und der Aufruf

    Code
    int *liste;
    liste = myTree.getValues();

    klappt irgendwie nicht, da der Compiler sagt:
    src/BTree.cpp: In member function `T* BTree<T>::getValues() [with T = int]':
    src/BTree.cpp:9: instantiated from here
    src/BTree.cpp:169: Warnung: address of local variable `aElementListe' returned

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 1. Juni 2005 um 22:57
    • #7

    Du legst mit new ein neues Objekt an:

    Code
    T *t = new T();
    return t;

    *plantsch*

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung