Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » wert behalten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
07.11.2003, 11:49 Uhr
~RedEagle
Gast


HI
Nach dem Durchlaufen einer Funktion soll eine !! VARIABLE !! ihren wert behalt, und beim erneuten ausführen der Funktion verwenden??

BSP:

C++:

void Funktion()
{
int var1;
cout << "Aktuelle Belegung von var1: " << var1;
cin >> var1;
cout << "var1 wurde geändert auf: " << var1;
}



var1 soll beim nächsten durchlauf den letzten (geänderten wert behalten)
Nach dem Beenden des Programms soll die Variable wieder gelöst werden.


WIE GEHT DAS?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.11.2003, 11:52 Uhr
typecast
aka loddab
(Operator)


Deklarier die Variable einfach als static. Dann wird sie beim ersten ausführeen der Funktion angelegt und erst beim Prgrammende gelöscht
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.11.2003, 11:53 Uhr
DerLiebeGast



Na du legst die Variable halt nicht lokal an !

MfG DerLiebeGast
--
if(lesen)
wissen++;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.11.2003, 12:00 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


du kannst auch einen pointer oder eine referenz auf die variable übergeben


C++:
int x=3;y=5;

void swap(int x,int y){int help=x;x=y;y=help;}
//wen du es so machst wird zwar getauscht aber wenn die funktion am ende durch ist steht in x immer noch 3 und in y dir 5 weil nur mit kopien von x und y gearbeitet worden ist die am ende der funktion wieder gelöscht werden.

void swap(int *x, int *y){int help=*x;*x=*y;*y=help;}
//hierbei steht auch nach dem durchlaufen der funktion in x die 5 und in y die 3 weil nicht die variablen selber sondern die pointer kopiert wurden

void swap(int &x, int &y){int help=x;x=y;y=help;}
//ist ähnlich wie bei den pointer nur das du dir das dämliche referenzieren ersparst. es wird nicht mit kopien gearbeitet sondern direkt mit den addressen


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.11.2003 um 12:06 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.11.2003, 12:44 Uhr
Tommix



Hallo,
@RedEagle: Um Loaddabs korrekte Antwort mal konkret zu machen:

C++:
void Funktion()
{
  static int var1 = 123; // Wert beim ersten Aufruf.
  cout << "Aktuelle Belegung von var1: " << var1;
  cin >> var1;
  cout << "var1 wurde geändert auf: " << var1;
}


Bei multitreaded Anwendungen musst Du damit aber aufpassen.

@DerLiebeGast: Wie er es nicht machen kann, hat er wohl schon gemerkt.

@Windalf: Kann es sein, dass Du die Frage nicht gelesen hast ?

Gruss, Tommix

Dieser Post wurde am 07.11.2003 um 12:45 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.11.2003, 12:49 Uhr
~RedEagle
Gast


Danke für die Hilfe

MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.11.2003, 13:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Tommix

Zitat:

Nach dem Durchlaufen einer Funktion soll eine !! VARIABLE !! ihren wert behalt, und beim erneuten ausführen der Funktion verwenden??


entweder hab ich gar nicht verstanden was der will oder...
Ich fand meine beispiele in bezug zu dieser fragestellung recht hilfreich, besonders weil ich was gegen globale variablen habe.

die variable behält doch so den wert der innerhalb der funktion errechnet wurde

würde er z.b. sowas schreiben wollen und wolte das mehrmals aufrufen

C++:
int i=0;
void increment(int i){++i;}


wäre meine erläuterung doch recht hilfreich oder nicht?
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.11.2003 um 13:02 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.11.2003, 13:08 Uhr
0xdeadbeef
Gott
(Operator)


Ne ausführliche Erklärung dazu, wie das funktioniert, gibts in der FAQ: www.fun-soft.de/showtopic.php?threadid=4351
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.11.2003, 13:53 Uhr
Tommix



@Windalf,
glaube ich nicht. Sieh doch mal RedEagles Beispiel an. Er will eine Variable innerhalb einer Funktion ohne Parameter erhalten. Ich glaube nicht, dass zu diesem Zweck eine Referenz auf eine Variable ausserhalb einzuführen besonders sinnvoll ist.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.11.2003, 14:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Tommix
Jo und ich bin davon ausgegangen das er auf diese Idee mit dem erhalten gekommen ist weil das andere mit dem übergeben der Funktion nicht geklappt hatte.

Mag sein das du recht hast und du ihm das gesagt hast was er meinte, ich habe da wohl was falsches vermutet.

Auf jeden Fall hab ich dieses eine mal richtig gelesen und versucht mal nicht ohne Hirn und Verstand zu posten wie das ja sonst zugegebener weise schon leider ein paar mal vorgekommen ist.
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: