Problem mit Zeigern



  • Hi ich wollte fragen , wo mein Problem ist :

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    class base
    {
          public:
            int* funktion( int a);
                 private:
                         };
    int* base::funktion(int a)
    {
         int e=a*a;
           int *c=&e;
    
          return c;
    
           }        
           int main()
           {
               cout<<"Geben sie ein Zahl die Kvadriert werden muss \n";
               int c;
               cin>>c;
               base ado;
               int* d=ado.funktion(c);
    
               cout<<"Die Zahl "<<d<<endl;
               getch();
               return 0;
               }
    

    Ich wollte esmit Zeigern , funktionieren , denn mit referenzen hat es schon geklappt .
    Min Program gibt mir nur die Adresse aus , wo meine Zahl liegt , doch die Zahl gibt sie nicht aus!!!
    Problem



  • Bei Zeigern musst du dereferenzieren um an den Inhalt zu kommen. Das macht man mit dem *-Operator. Versuche mal folgendes:

    cout << *d;
    


  • Lightning* schrieb:

    Problem

    Ein viel größeres Problem ist, dass du die Adresse einer lokalen Variablen zurückgibst.



  • Lightning* schrieb:

    Hi ich wollte fragen , wo mein Problem ist :

    cout<<"Geben sie ein Zahl die Kvadriert werden muss \n";
    

    Ganz klar bei der Beherrschung der deutschen Sprache 🙄



  • die Variable c in der Funktion wird gelöscht sobald die Funktion die kontrolle an main() zurück gibt.

    *d zeigt dann auf einen nicht definierten Speicherbereich.

    und warum musst du unbedingt oop verwedenden ?? dazu gibts hier doch garkeinen Grund.



  • Hi!

    Machs doch einfach so:

    void foo( int a, int *p )
    {
    	*p = a*a;
    }
    

    grüße


Anmelden zum Antworten