W wyróżnionych polach podaj tekst, który zostanie wypisany przy wykonaniu odpowiednich linii programu.
#include <cstdio>
void f1 (int x) { printf ("F1: %d\n", x++); }
void f2 (int y) { printf ("F2: %d\n", y--); }
void f3 (int&z) { printf ("F3: %d\n", z++); }
void (*f[])(int) = {f1,f2};
int main() {
int a = 7, b = a, *c = &b, *&d = c;
a) f1(*c++);
b) f3(a);
c) f2(b);
d) f3(*d);
e) f[1](2);
f) f+(1);
g) (*f)(1);
}
Niestety , ale umiem zrobić tylko a,c i to nie jestem pewien. Mógłby ktoś opisać jak dojść do pozostałych ( i mowie o innej drodze niż wpisanie tego w kompilator xD ) i sprawdzić czy moje rozumowanie a,c jest poprawne ?
a) wskaźnik c pokazuje na obiekty typu int, do którego przypisano adres b, więc pokazuję na b , jako że b = 7 , to
pod adresem b znajduje się 7 , więc *c++ = 7
F1(7) , wydrukuje F1 : 7
b)F3(7) i nie mam pojęcia jak to dalej zinterpetować
c) f2(7) , po prostu wydrukuje wartość y , w tym wypadku F2 : 7
d)
e)
f)
g)