Forum: Mikrocontroller und Digitale Elektronik Anfänger C Frage


von Anfänger++ (Gast)


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.

von Thomas K. (thomas99)


Lesenswert?


: Bearbeitet durch User
von Timmo H. (masterfx)


Lesenswert?

Nimm globale Variablen.

von Rene H. (Gast)


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é

von Timmo H. (masterfx)


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
}

von Anfänger++ (Gast)


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);

???

von Anfänger++ (Gast)


Lesenswert?

Timmo hat schon geantwortet und war schneller. Vielen Dank

von Rene H. (Gast)


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é

von Anfänger++ (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rene H. schrieb:
> und als Referenz
> void Funktion2(int& weite, int& breite, int& tiefe)
> {
> ...
> }

Das ist kein C.

C kennt keine Referenzen, die gibt es nur in C++.

von Anfänger C++ (Gast)


Lesenswert?

Mein Fehler. Es geht um C++

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.