Zeiger zeigt auf Zeiger Programm
-
Wie würdet ihr folgendes Programm schreiben:
Es gibt einen int Zeiger (int *pX) der auf eine Variable (int value) zeigt.
Dann gibt eine for-Schleife welche 100 mal durchläuft, beim ersten durchlauf wird die Adresse des Zeigers "pX" in einem anderen Zeiger (z.B. int *save_p1)
abgelegt. Beim nächsten durchlauf wird wiederum die Adresse des Zeiger "save_p1" in einem anderen Zeiger gespeichert....u.s.w...dass ganze 100 mal.Ist dass zu lösen, ohne den Dereferenzierungsoperator 100mal hinzuschreiben?
MfG
Stromberg
-
Mit dem Präprozessor (z.B. durch Boost.Preprocessor) liesse sich wahrscheinlich schon etwas machen. Oder eventuell mit Template-Metaprogrammierung und Typedefs.
Aber kannst du mir sagen, was das bringen soll? So was ist derart realitätsfern und irrelevant, dass sich der Aufwand nicht wirklich lohnt...

Edit: Falls du es unbedingt wissen willst, hier mal ein Beispiel mit Template-Metaprogrammierung:
template <typename T, unsigned int C> struct Pointer { typedef typename Pointer<T*, C-1>::type type; }; template <typename T> struct Pointer<T, 0> { typedef T type; }; Pointer<float, 4>::type ptr; // ptr ist nun vom Typ float****Pass aber auf, bei hoher Indirektion kriegst du den Compiler schnell in die Knie...
-
casten!
int *ptr = ...; for (unsigned i = 0; i < 100; ++i) ptr = reinterpret_cast<int *>(*ptr);