tausch mit pointer
-
Hallo,
stehe auf dem Schlauch und wäre dankbar wenn mir jemand helfen könnte. Hänge jetzt schon eine Zeit an diesem Selbstlernbeispiel obwohl ich mir einbilde die Grunddefefinitionen zu kennen, aber offensichtlich eben ..
#include <stdio.h>
........
........
void skalar(int x, int *y, int parameter);int i = 1;
int main(int argc, char* argv[])
{
int x = 8;
int y = 5;
int parameter = 2;...........
............
skalar(x, &y, parameter);
printf("x: ____ %d\n", x);
skalar(x, &y, parameter);
skalar(x, &y, parameter);printf("y: ____ %d\n", y);
printf("Skalar: ____ %d\n", parameter);
return 0;
}...........
void skalar(int x, int y, int parameter)
{
static int aufruf;
int tausch;
aufruf += parameter; \\aufruf erhält 2 und wird beim 2ten Aufruf 4
\\weil static (?)
x = x * parameter; \\x=82
*y = *y * parameter; \\y=5*2 (?)schreibt 10 in ytausch = x; \\tausch=16
x = *y; \\x=10
*y = tausch; \\y=16
parameter = aufruf; \\parameter=2 (?) beim 2ten aufruf 4 weil static
}/*
Lösung:
.... \\ keine Ahnung wie man auf diese Werte kommt.
x: ____ 8
y: ____ 16
Skalar: ____ 2
*/naja, bin eben Anfänger,danke.
-
fetz schrieb:
...
.... \\ keine Ahnung wie man auf diese Werte kommt??ja.
mfg,
m.l.
-
benutze er cpp-tags:
#include <stdio.h> ........ <-- error ........ <-- error void skalar(int x, int *y, int parameter); int i = 1; int main(int argc, char* argv[]) { int x = 8; int y = 5; int parameter = 2; ........... <-- error ............ <-- error skalar(x, &y, parameter); printf("x: ____ %d\n", x); skalar(x, &y, parameter); skalar(x, &y, parameter); printf("y: ____ %d\n", y); printf("Skalar: ____ %d\n", parameter); return 0; } ........... <-- error void skalar(int x, int *y, int parameter) { static int aufruf; int tausch; aufruf += parameter; \\aufruf erhält 2 und wird beim 2ten Aufruf 4 \\weil static (?) x = x * parameter; \\x=8*2 *y = *y * parameter; \\y=5*2 (?)schreibt 10 in y tausch = x; \\tausch=16 x = *y; \\x=10 *y = tausch; \\y=16 parameter = aufruf; \\parameter=2 (?) beim 2ten aufruf 4 weil static } /* Lösung: .... \\ keine Ahnung wie man auf diese Werte kommt. x: ____ 8 y: ____ 16 Skalar: ____ 2 */ naja, bin eben Anfänger,danke.
Lösung:
.... \\ keine Ahnung wie man auf diese Werte kommt.
x: ____ 8
y: ____ 16
Skalar: ____ 2das ist schlecht. erkundige er sich, was lokale variablen sind und was mit variablen passiert, wenn sie per zeiger übergeben werden.
-
Hallo lallaallaaaahh,
Liege ich damit richtig, das x und y den Wert aus der main fkt übernehmen während für y über den Inhaltsoperator der Wert 16 zurück geschrieben wurde?
-
dein x in der main-funktion bekommt davon nichts mit, das es ein weiteres x in der funktion skalar gibt und behält daher den wert, den du ihr in der main-funktion gibst.
in der funktion skalar wird mit einer lokalen kopie gearbeitet.
anders ist es mit der variable y, du übergibst einen zeiger auf y. damit gibst du die adresse der variable y in der funktion skalar bekannt und kannst mit dem inhalts-/dereferenzierungsoperator den inhalt ändern.
-
Danke I,
ich Schussel hatte es irgendwie wie
printf("x: ____ %d\n", skalar(x, y, parameter));
im Kopf.
thanks