Frage zu Zeiger



  • Hallo

    int (*func)(); <-- Was ist das für ein Zeiger wie kann man damit arbeiten ?

    Ich habe mir jetzt schon mehrere Zeiger Tutorials durchgelesen aber ich finde nichts zu solch einer Art von Zeigern: int (*func)();

    Gehört das zu Funktionszeigern ?

    Ich hab sowas irgendwomal gesehen aber ich weiss halt nicht was ist mit diesem int (*func)(); Zeiger machen kann.



  • Naja, du kannst auf Funktionen Zeigen. Etwa

    #include <iostream>
    
    int foo() { return 1; }
    int bar() { return 2; }
    
    int main() {
      int (*func)();
    
      func = foo;
      std::cout << func() << '\n'; // gibt 1 aus
      func = bar;
      std::cout << func() << std::endl; // gibt 2 aus
    }
    


  • Jep, das ist ein Funktionszeiger.

    int meineFunktion();
    int (*func)();
    
    func = meineFunktion;
    
    int a = func();
    


  • Ich hab jetzt mal versucht der Funktions foo über den Funktionszeiger func einen Wert zu zuweisen:

    Aber ich bekomme immer die Fehlemeldung L-Wert erwartet was heisst das jetzt ?

    Was mache ich da falsch ?

    #include <iostream>
    using namespace std;
    
            int foo(int var)
            {
                 return var;
            }
    
    int main()
    {
    
    int (*func)( int );
    
    func(2) = foo;
    
    cout <<  func(2);
    
    system("PAUSE");
    }
    


  • Du übergibst da einen Parameter, was zur Folge hat, dass die Funktion ausgewertet wird. Lass die Klammern und das Argument weg!



  • Ahh so gehts ty

    #include <iostream>
    using namespace std; 
    
            int foo(int var) 
            {
                 cout<<"foo wert: " << var << endl;
                 return var; 
            } 
    
    int main() 
    { 
    
    int (*func)( int ); 
    
    func = foo;
    
    func(2);
    
    system("PAUSE"); 
    }
    


  • 👍
    Super, dass du die komplette Lösung nochmal postest. Wird leider viel zu wenig gemacht. Auch wenn ein Problem trivial scheint kann es für jemanden anderen sehr hilfreich sein, wenn ein Problem komplett gelöst ist! 🙂


Anmelden zum Antworten