• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variable aus einer Funktion "rauskopieren" o.ä.

Wash

Neues Mitglied
Hallo.
Meine Funktion macht etwas.
Und ich möchte, dass das Ergebnis aus der Funktion raustransportiert wird, damit ich das Ergebnis auch außerhalb der Funktion nutzen kann.

Hier ein kleines Beispiel:

Imageshack - screenake

Ich will das ich int abc
auch außerhalb benutzen kann.
 
Werbung:
Nun, ich kenne mich nicht mit C (oder ist das C#, C++?) aus, aber prinzipiell musst du die Variable abc einfach per return zurückgeben. Warum du hier eine 0 zurückgibst verstehe ich nicht ganz, wenn du return abc dort hinschreibst wird der Wert der Variable an dem Ort zurückgeliefert, wo die Funktion aufgerufen wird.
 
Code:
int addieren(int zahl)
{
  int abc;
  ...
  return abc;
}
...
cout << "blabla" << addieren(42) << endl;
Darf man fragen, auf welche Weise du versuchst, die Sprache zu lernen? Irgendwie fehlen dir nämlich Grundlagen an allen Ecken und Enden ;)

Gruß,
Björn
 
Werbung:
Ja aber was ist wenn ich z.B. mehrere Variabeln aus der Funktion brauche?
Mit Return kann ich ja lediglich nur eine zurückliefern

edit:

wenn ich abc als return setze , gehts auch nicht:


int addieren(int xzahl)
{

int egal = 876;
int abc = egal+xzahl;


cout << "Wie addieren nun:\n";
cout << abc;
return abc;
}


int main()
{
int einezahl = 400;
addieren(einezahl);


cout <<"Ausgabe Variabel ABC aus der Funktion addieren: "<<abc;


getch();
return 0;
}
 
Dafür habe ich doch das Beispiel mitgegeben. Tar hat's auch erwähnt:
Tar schrieb:
wenn du return abc dort hinschreibst wird der Wert der Variable an dem Ort zurückgeliefert, wo die Funktion aufgerufen wird.
Wash schrieb:
Ja aber was ist wenn ich z.B. mehrere Variabeln aus der Funktion brauche?
Mit Return kann ich ja lediglich nur eine zurückliefern
Du könntest ein Array zurückgeben oder mit Referenzen oder Zeigern arbeiten, kommt immer auf den Verwendungszweck und die Umstände an. Was hast du denn konkret vor?

Gruß,
Björn
 
Grundlagen OOP:
Code:
int addieren(int xzahl)
{
 
    int egal = 876;
    int abc = egal+xzahl;
 
 
    cout << "Wie addieren nun:\n";
    cout << abc;
    return abc;
}
 
 
int main()
{
    int einezahl = 400;
 
 
    cout <<"Ausgabe  Variabel ABC aus der Funktion addieren: "<<addieren(einezahl);
 
 
    getch();
    return 0;
}

Wenn du mehrere Variablen aus der Funktion brauchst, geht das entweder:
1.) Mit den von BcF genannten Funktionen
2.) Du machst die Variablen Public (!= OOP)
3.) Du schaust dir das Schlüsselwort out an. Juhu ich bin ein Link

Und nur so nebenbei: Schau dir OOP an!
http://msdn.microsoft.com/de-de/library/t3c3bfhx(VS.80).aspx
 
Werbung:
Datenkapselung, Funktionsaufruf
??? Wo issen das Objekt in dem die Daten gekapselt werden. Das die Variable nicht außerhalb der Funktion genutzt werden kann, hat lediglich was mit dem Gültigkeitsbereichs zu tun. Funktionsaufruf? Demnach ist jede Programmiersprache objektiorentiert, wenn ich eine Funktion aufrufe, z.B. demnach auch C?

Gruß thuemmy
 
Werbung:
Mit OOP hat das nichts zu tun, da hier keine Objekte geschweige denn Klassen verwendet werden. Bei diesem simplen Beispiel reicht return aus. Sonst schaue dir bitte das Thema "Zeigerarithmetik" an.

Vielleicht beschreibst Du deinen Wunsch noch genauer, wenn dir return nicht "reicht" (wobei es genau dafür gedacht ist)! Das ist der Unterschied zwischen Funktion und Prozedur!

Lerne Grundlagen!

lg, freakXHTML
 
Was hast du denn konkret vor?

Also ich versuche ein kleines Würfel-Spiel zu schreiben.

Ich habe meine Funktion wurfeln(); , die zwei Randomzahlen generiert.

Button1:
Wenn man den klickt, gibt er halt aus wurfeln(); zwei beliebige Zahlen (1-6) aus.

Butto2: (Wurf ausblenden)
Wenn man darauf klickt, wird anstelle der zwei Zahlen ein "X" editert.

So nun kommt der Button3 (Wurf wieder einblenden):
Hier komme ich derzeit nicht weiter.
Ich muss das irgendwie hinbekommen, dass er den alten Wurf speichert und wieder anzeigt.

Wenn ich die Variabeln (beide Zahlen) ganz normal ausgeben lasse, generiert die Funktion wurfeln(); ja schon wieder neue Zahlen.
 
Um eine Variable, bzw. deren Inhalt, zu speichern gibst du ein static vor dem Typen an.

Code:
static int abc = 512;
abc = 2;

Der erste Wert ist der Initialwert und gilt nur _1_ mal, d.h. du kannst ihn so nicht öfter initialisieren, denn er existiert das ganze Programm lang.

Da er das ganze Programm lang existiert, behält er seinen ursprünglichen Wert (hier 2).
 
Werbung:
warum machst du dir nicht einfach eine funktion die einen würfel einmal würfelt und führst diese 2 mal aus?

du könntest auch eine funktion bauen an die du variablen übergeben kannst und in diese wird dann per referenz ein wert eingetragen, somit könntest du so viele würfel angeben wie du willst.

beispiel:

Code:
int wuerfel1;
int wuerfel2;

wuerfel(wuerfel1 wuerfel2);

// oder einzeln

wuerfel(wuerfel1);

mir fallen noch viel mehr sachen ein den job zu erledigen aber vielleicht währe es am besten du suchst ein manual oder so in google das die funktionsweise von referenzen beschreibt.
 
Die Fragen und Probleme haben sich schon lange geklärt.
Für diejenigen, die sich viell. mal die gleiche Frage stellen.
Hier mein Lösungsansatz:

Hallo.
Meine Funktion macht etwas.
Und ich möchte, dass das Ergebnis aus der Funktion raustransportiert wird, damit ich das Ergebnis auch außerhalb der Funktion nutzen kann.
Mit Rückgabewert oder mit Pointer/Referenzen (Schnittstelle).
Hier ein Codebeispiel:

PHP:
void AlterAendern(int *newage) // * = der Zeiger
{
    *newage=100;
}

int main()
{    
    int iMyage = 20;
    cout << "Ich bin "<<iMyage<<" Jahre alt."<<endl;
    AlterAendern(&iMyage); //& = Speicheradresse wird übergeben
    cout << "Jetzt bin ich "<<iMyage<<" Jahre alt."<<endl;    
}
Ausgabe:
Ich bin 20 Jahre alt.
Jetzt bin ich 100 Jahre alt.


Für weitere Details einfach nach "Zeiger als Parameter" o.ä. googlen.



Viel Spaß und Erfolg. ;)
 
Werbung:
Zurück
Oben