Anfänger C Frage

Gast #3620060
Lesenswert?
• ▲
▼
Ich habe gerade angefangen mich mit C++ zu beschäftigen und habe eine 
vermutlich einfache Frage.

Ich habe zwei verschiedene Funktionen, in etwa so (fiktives Beispiel):
1
void Funktion1()
2
{
3
...
4
int weite = irgerndwas1;
5
int breite = irgendwas2;
6
int tiefe = irgendwas3;
7
...
8
}

Diese 3 Variablen möchte ich jetzt in einer Funktion2() wiederverwenden 
ohne die Zuweisung erneut machen zu müßen. Weite, breite und tiefe 
sollen also auch in Funktion2() verwendet werden können und gültig sein. 
Wäre es nur eine Variable könnte ich dies natürlcih mit einem 
Rückgabewert realisieren. So bin ich mir noch unsicher.
Gast #3620080
Lesenswert?
• ▲
▼
Du übergibst sie als Argumente an Funktion2. Wenn sie in Funktion 
veränderbar sein müssen, als Referenz.
1
void Funktion2(int weite, int breite, int tiefe)
2
{
3
...
4
}

und als Referenz
1
void Funktion2(int& weite, int& breite, int& tiefe)
2
{
3
...
4
}

Grüsse,
René
#3620088
Lesenswert?
• ▲
▼
Hängt natürlich davon ab wie die Funktion1 und 2 aufgerufen werden 
sollen. Wenn funktion1 und funktion2 aus der main heraus aufgerufen 
werden aber nur in Funktion1 verändert werden sollen, in funktion2 aber 
nur verarbeitet dann macht man es z.B. so
1
int main(){
2
  int weite, breite, tiefe;
3
  int ergebnis;
4
  funktion1(&weite, &breite, &tiefe);
5
  ergebnis = funktion2(weite,breite,tiefe);
6
}
7

8
funktion1(int *w, int *b, int *t){
9
  *w = 12;
10
  *b = 23;
11
  *t = 34;
12
}
13

14
int funktion2(int w,int b, int t){
15
  return w*b*t;
16
}
Gast #3620090
Lesenswert?
• ▲
▼
Danke für die schnellen Antworten.

@ Rene

Ich will ja dass der Funktion2 genau die Werte weite, breite und tiefe 
aus Funktion1 übergeben werden. Vermutlich wieder blöde Frage, aber wie 
rufe ich dann Funktion2 auf?

EInfach:
1
void Funktion1()
2
{
3
...
4
int weite = irgerndwas1;
5
int breite = irgendwas2;
6
int tiefe = irgendwas3;
7
...
8
}
9

10
void Funktion2(int weite, int breite, int tiefe)
11
{
12
...
13
}
14

15
Funktion2(weite,breite,tiefe);

???
Gast #3620095
Lesenswert?
• ▲
▼
Anfänger++ schrieb:
> Danke für die schnellen Antworten.
>
> @ Rene
>
> Ich will ja dass der Funktion2 genau die Werte weite, breite und tiefe
> aus Funktion1 übergeben werden. Vermutlich wieder blöde Frage, aber wie
> rufe ich dann Funktion2 auf?
>
> EInfach:
> void Funktion1()
> {
> ...
> int weite = irgerndwas1;
> int breite = irgendwas2;
> int tiefe = irgendwas3;
> ...
> }
>
> void Funktion2(int weite, int breite, int tiefe)
> {
> ...
> }
>
> Funktion2(weite,breite,tiefe);
>
> ???
Richtig!
Natürlich aber aus einer Funktion aus (in Deinem Fall in Funktion1).

Wenn Du das nicht willst, ist es hilfreich wenn Du die Frage näher 
beschreibst. Also, wo wird Funktion1 aufgerufen und wo Funktion2 
(Stichwort: Scope).

Grüsse,
René
Gast #3620103
Lesenswert?
• ▲
▼
Also eigentlich habe ich nur eine Lin, nennen wir sie Unter1.h
In dieser befindet sich die Funktion1():
1
void Funktion1()
2
{
3
...
4
int weite = irgerndwas1;
5
int breite = irgendwas2;
6
int tiefe = irgendwas3;
7
...
8
}

In derselben Unter1.h will ich nun auf eine Funktion2() zugreifen, die 
mit denselben Variablen weite,breite und tiefe aus Funktion1() arbeiten 
kann, also in etwa so:
1
void Funktion2()
2
{
3
...
4
int Volumen;
5
Volumen = weite*breite*tiefe
6
...
7
}

Das ganze halt ohne in Funktion2() wie der die Zuweiseungen int weite = 
irgerndwas1;  usw. zu machen

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.