Problem mit zeigern!
-
lol
-
Okay versuch nummer 103
:#include<iostream> using namespace std; /*Zeiger test*/ void func1(int, int); void func2(int*, int*); void func3(int&, int&); int* func4(); int main() { int zahl; int zahl2; int* pzahl; int* pzahl2; pzahl=&zahl; pzahl2=&zahl2; cout<<"Geben sie 2 zahlen ein"<<endl; cin>>zahl; cin>>zahl2; cout<<"Geben sie nun die zeiger art ein die sie haben wohlen"<<endl <<"Hier die Uebersicht(1=Werteuebergabe, 2=Zeigerwerteuebergabe, "<<endl <<"3=Uebergabe per Reference, 4=heapspeicher nutzung"<<endl; int choice; cin>>choice; switch(choice) { case 1: func1(zahl, zahl2); cout<<zahl<<endl <<zahl2<<endl; break; case 2: func2(pzahl, pzahl2); cout<<zahl<<endl <<zahl2<<endl; break; case 3: func3(zahl, zahl2); cout<<zahl<<endl <<zahl2<<endl; break; case 4: int* pzahl2;//deklaration des zeigers auf int zahl2 pzahl2=func4();//zeiger an func 4 übergeben delete pzahl2;//speicher löschen cout<<zahl<<endl <<zahl2<<endl; break; default: cout<<"Eingabe Ungueltig"<<endl; break; } system("PAUSE"); } void func1(int number, int number2) { number=100; number2=200; cout<<number<<endl <<number2<<endl; } void func2(int* pnumber, int* pnumber2) { *pnumber=110; *pnumber2=220; } void func3(int& number, int& number2) { number=130; number2=240; cout<<number<<endl <<number2<<endl; } int* func4() { int* pnumber=new int;//speicherplatz holen *pnumber=10;//speicher wert zuweisen cout<<*pnumber<<endl;//wert ausgeben return pnumber;//zeiger zurückgeben }
-
Er hats endlich kapiert

Nix für ungut, aber zusehen, dass endlich kein return nummer1, mummer2 in deinem Code steht ist echt schön.
-
Jo trotz meines Realschulabschlusses(@WIP) stand ich ne weile auf der leitung

Ferien halt
-
MartinMilbret schrieb:
trotz meines Realschulabschlusses(@WIP) stand ich ne weile auf der leitung

lol?
-
hätte ich anders schreiben sollen. Korektur:
Trotz meines vorhabens einen erweiterten Realschulabschluss zu erreichen stand ich dur die ferien extrem auf der leitung
EDIT: Hier mal das programm mit header datei(mit header daten bin ich noch am anfang :P):
header:int zahl; int zahl2; int* pzahl; int* pzahl2; int choice; void func1(int, int); void func2(int*, int*); void func3(int&, int&); int* func4();cpp datei:
#include<iostream> #include"Crap.h" using namespace std; /*Zeiger test*/ int main() { pzahl=&zahl; pzahl2=&zahl2; cout<<"Geben sie 2 zahlen ein"<<endl; cin>>zahl; cin>>zahl2; cout<<"Geben sie nun die zeiger art ein die sie haben wohlen"<<endl <<"Hier die Uebersicht(1=Werteuebergabe, 2=Zeigerwerteuebergabe, "<<endl <<"3=Uebergabe per Reference, 4=heapspeicher nutzung"<<endl; cin>>choice; switch(choice) { case 1: func1(zahl, zahl2); cout<<zahl<<endl <<zahl2<<endl; break; case 2: func2(pzahl, pzahl2); cout<<zahl<<endl <<zahl2<<endl; break; case 3: func3(zahl, zahl2); cout<<zahl<<endl <<zahl2<<endl; break; case 4: int* pzahl2;//deklaration des zeigers auf int zahl2 pzahl2=func4();//zeiger an func 4 übergeben delete pzahl2;//speicher löschen cout<<zahl<<endl <<zahl2<<endl; break; default: cout<<"Eingabe Ungueltig"<<endl; break; } system("PAUSE"); } void func1(int number, int number2) { number=100; number2=200; cout<<number<<endl <<number2<<endl; } void func2(int* pnumber, int* pnumber2) { *pnumber=110; *pnumber2=220; } void func3(int& number, int& number2) { number=130; number2=240; cout<<number<<endl <<number2<<endl; } int* func4() { int* pnumber=new int;//speicherplatz holen *pnumber=10;//speicher wert zuweisen cout<<*pnumber<<endl;//wert ausgeben return pnumber;//zeiger zurückgeben }Falls noch mehr in die header kann bitte antworten

-
Okay nochmal ein anderes zeiger problem:
#include<iostream> using namespace std; char* wahl(int); int main() { int months; cout<<"Welchen monat wollen sie haben(1-12)\n"; cin>>months; wahl(months); cout<<months<<"\n"; system("PAUSE"); } char* wahl(int monat) { if(monat<1||monat>12) { return "ungültig"; } char* pszmonate[]={"ungültig", "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; cout<<monat<<"\n"; return pszmonate[monat]; }Das Programm ansich läuft aber er soll ja die namen der monate zurückgeben und dann ausgeben aber er gibt nur die zahl die eingegeben wurde aus

-
Dann mußt du auch den Rückgabewert von wahl() weiterverarbeiten (in der Funktion gibst du wirklich nur die Zahl aus und schickst den Monatsnamen per return an's Hauptprogramm - nur das vergisst diesen Wert sofort wieder).
btw, ich weiß nicht, ob der Wert noch gültig ist, wenn du aus der Funktion rauskommst - kann genausogut sein, daß sich inzwischen der Stack aufgräumt hat und der zurückgegebene Pointer auf einen Haufen Datenmüll zeigt.
-
also sollte ich die ausgabe wohl mal auf die funktion eingrenzen oder?
aber wenn ich das mache gibt er auch nur die zahl aus
-
cout<<pszmonate[monat];?
-
@shapless
THX Hat funktioniert
hier der code:
#include <iostream> using namespace std; void wahl(int); int main() { int months; cout<<"Welchen monat wollen sie haben(1-12)\n"; cin>>months; wahl(months); system("PAUSE"); } void wahl(int monat) { if(monat<1||monat>12) { cout<<"ungueltig\n"; } else { char* pszString[]={"ungueltig", "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; cout<<pszString[monat]<<"\n"; } }