zeiger als parameter
-
#include <stdio.h>
int a, b, c;
int f(int *b){
c = *b+10;
*b = 2;
return (*b+c);
}int main(void){
int *q = &a;
a=b=c=10;
printf("a: %d, b: %d, c: %d, *q: %d, f(q): %d", a, b, c, *q, f(q));
getc(stdin);
}warum ist die ausgabe für a hier 2 und für *q auch 2?...warum sind a und *q nicht 10?
wie gehe ich hier vor?danke für eure hilfe!!!
gruss
dc
-
f(q) setzt den wert von a auf 2. und da bei funktionsaufrufen in c die auswertung der argumente von rechts nach links geschieht, wird erst f() aufgerufen bevor die argumente a,b,c und *q auf den stack kommen. deshalb bekommt printf() fur a und *q den wert 2.
-
hallo konfusius,
vielen dank für deine promte antwort!!!
habe mich heute morgen tierisch gefreut... und verstehe jetzt!viele grüsse
dc