Was nützen *Pointer?
-
mit dem "/" meine ich einen divisions operator ^^
-
ich versteh folgende 2 kontrukte noch nicht;/
int* foo::operator->() { return &(ptr->val); }
mit &(ptr->val) bekomm ich die adresse?
Node*& findPlaceToInsertOrReplace(double x){ ... return &a; <--- adresse des pointers? }
adresse auf referenz auf pointer? wie sagt man dass;)
wie muss hier noch der funktionsaufruf aussehen?
...bei nem array weiss ich auch das ein arr[i] das gleich ist wie ein *&arr[i]
-
asking a question schrieb:
mit dem "/" meine ich einen divisions operator ^^
Man kann Zeiger nicht durcheinander teilen.
-
ptr schrieb:
wie muss hier noch der funktionsaufruf aussehen?
ich denke da an sowas:
Node*& t=findPlaceToInsertOrReplace(3.14); t=new Node(t->next,2.71);
-
Jester schrieb:
asking a question schrieb:
mit dem "/" meine ich einen divisions operator ^^
Man kann Zeiger nicht durcheinander teilen.
Wieso nicht?
CObject *pOne, *pTwo; // Zwei Zeiger int x = reinterpret_cast<int>(pOne); int y = reinterpret_cast<int>(pTwo); int r = x / y; CObject *pResult = reinterpret_cast<CObject*>(r);
Wird bis auf ein paar Warnmeldungen und einigen seltsamen Blicken aktzeptiert. Der Verwendungszweck dabei bleibt mir allerdings auch schleierhaft ^^
Grüssli
-
Und jetzt zeig mir bitte noch die Zeile in dem Beispiel in der Du zwei Zeiger teilst
-
LordJaxom schrieb:
Und jetzt zeig mir bitte noch die Zeile in dem Beispiel in der Du zwei Zeiger teilst
Man nicht so pingelig ^^ ... ich teile den Wert der Adresse. Ob jetzt die Adresse in einem Integer gespeichert ist oder in einem Pointer spielt ja nicht so eine grosse Rolle. Die Zahl/Der Wert dahinter sollte gleich bleiben ^^
Grüssli
-
sorry, was ich meinte war viell kann ich zb ne iteration machen ohne die variable zu überschrieben und ne anderen zu verwenden sorich mit zeigern.
-
Dravere schrieb:
ich teile den Wert der Adresse. Ob jetzt die Adresse in einem Integer gespeichert ist oder in einem Pointer spielt ja nicht so eine grosse Rolle. Die Zahl/Der Wert dahinter sollte gleich bleiben ^^
Strenggenommen ist nichtmal garantiert, dass Dein Pointer in einen signed int überhaupt reinpasst (spätestens bei x64 unter VC++ ist das imho nicht mehr der Fall). Und selbst wenn, würden die unsigned Adressen im signed int wenn das höchstwertige Bit gesetzt ist nicht so teilen, wie Du vermutlich erwartest
-
dann nehmen wir halt
__int64
Aber mir ist schon klar, dass es eigentlich nicht so ganz dasselbe ist. Aber es ist ja auch unnötig darüber weiterzudiskutieren, da es völliger Quatsch ist ^^
@ "asking a question"
Inkrementieren eines Pointers geht. Bzw. auch dekrementieren. Also:int *p; // Einen Zeiger ++p; // Funktioniert --p; // Funktioniert auch
Grüssli
-
volkard schrieb:
C++Progger schrieb:
aber dass Experten sie lieben.
das war vermutlich einer, der erst seit 3 jahren c++ kann und sich als experte fühlt. keine bange, wenn der erste entdeckerstolz verraucht ist, wird er wieder umschwenken und pointer und referenzen meiden (außer in trivialen fällen wie übergabeparameter auf 4 bytes schrumpfen).
Pointer = Indirektion = extrem wichtiges Mittel in der Programmierung. Irgendwie erscheint mir das Verständnis von Pointern (und damit meine ich jetzt nicht unbedingt die konkrete C-Inkarnation) *extrem* wichtig zu sein und man sollte schon gut unterscheiden zwischen der sinnlosen Verwendung von Pointern in C++ (dynamische Objektallokation statt Stackobjekte, zuviele nackte Pointer, Arrays statt Container, keine Referenzen...) und der sinnvollen Anwendung des Pointer-Konzepts (z.B. in Datenstrukturen und Algorithmen).
-
akari schrieb:
Hallo
Pointer braucht man bei dynamischer Speicherverwaltung.
bis bald
akari... und, wenn man Laufzeit-Polymorphie nutzen will (sprich: Ausnutzen, dass man einen "Mercedes" wie jedes andere "Auto" behandeln kann).
(Geht mit Referenzen natürlich genauso)Gruß,
Simon2.