Frage zu Zeiger
-
Hi,
ich habe folgenden Quelltext gegeben:
string name [5] name[0] = "Hans"; ... name[4] = "Max";Nun rufe ich eine Funktion Sortieren auf:
sortieren(name);void sortieren(string *array) {...}Meine Frage dazu:
Warum rufe ich denn hier die Funktion sortieren nicht mit dem Dereferenzierungsoperator * auf?ODer ist die Frage von vornherein doof, weil string *array ein Zeiger ist und somit keine dereferenzierten Objekte gespeichert werden können, sondern nur die Adressen der Objekte??
Danke!
Gruß
-
Arrays können nicht kopiert werden, aber schon aus C bekannt existiert der Array-to-Pointer Decay (oder so ähnlich) - der Name eines Arrays kann implizit konvertiert werden zu einem Pointer auf den Array-Anfang.
(das und die Tatsache, daß Pointer auch einen Index-Zugriff erlauben, führen mitunter zu der Legende, daß Pointer und Arrays das selbe sind)Übrigens solltest du deiner sortieren()-Funktion auch die Größe des Arrays mitgeben - sie hat nämlich keine Möglichkeit, sie selber zu ermitteln. Oder noch besser, du verwendest std::vector<>/std::tr1::array<> und std::sort().