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);
    

Anmelden zum Antworten