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