Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wywołanie funkcji + poboczna dyskusja o referencji

Ostatnio zmodyfikowano 2012-09-25 21:24
Autor Wiadomość
mOlaa
Temat założony przez niniejszego użytkownika
Wywołanie funkcji + poboczna dyskusja o referencji
» 2012-09-23 20:00:07
Przypuśćmy, że w programie mamy następujące deklaracje:

double a, b, c;
int i, j, k;
double oblicz(double *x, double y, int z);

Które, z podanych wywołań funkcji oblicz() są poprawne i dlaczego?
a. oblicz=3+oblicz(b, 4.6, i);        (tak?)
b. cout<<sqrt(oblicz(&a, b+5, k));    (tak?)
c. i=oblicz(7.15, b, oblicz(c,a,8));  (nie?)
d. cout<<oblicz(&c, 0.2*b, 7.0);      (nie?)
e. oblicz(c, a-2, j)=14;              (nie?)
f. c=9-oblicz(&b, a, j+2);            (tak?)

Bardzo proszę o pomoc, czy moje myślenie (odpowiedzi w nawiasach okrągłych) jest poprawne.
Jutro mam sprawdzian z programowania i nie potrafię zrozumieć różnicy między wskaźnikiem i referencją.
P-65451
cyklopek11
» 2012-09-23 22:12:15
a. Nie
Błąd 1. Nie można przypisać funkcji oblicz niczego, to nie jest "l-wartość"
Błąd 2. oblicz(b, 4.6, i); nie pasuje pierwszy parametr, nie można żadną konwersją przekonwertować typu double na adres do typu double.

b. Tak
Pod warunkiem, że oblicz(&a, b+5, k) nie zwróci liczby ujemnej!
c. Nie
Błąd 1. Stałej 7.15 nie można przekonwertować na adres do double
Błąd 2. w oblicz(7.15, b, oblicz(c,a,8)),
oblicz(c,a,8) nie można przekonwertować typu double (c) na adres do typu double

d.Tak
e. Nie
Błąd 1. oblicz(c, a-2, j)=14 nie można przypisać, wartość zwracana nie jest "l-wartością"
Błąd 2. w oblicz(c, a-2, j)  nie można przekonwertować typu double (c) na adres do typu double
f. Tak


Oczywiście odpowiedzi są poprawne jeśli do zmiennych:
a, b, c, i, j, k przed wywołaniem funkcji oblicz coś sensownego zostało przypisane.
P-65457
yoogi
» 2012-09-23 22:14:02
Wskaźnik to wskaźnik, zawsze ma 4 bajty pod systemami 32 bitowymi. Referencja występuje tylko w argumentach funkcji
P-65458
DejaVu
» 2012-09-23 22:26:24
Referencja występuje tylko w argumentach funkcji
Nieprawda.
P-65459
yoogi
» 2012-09-23 22:49:18
Dobra to jeszcze w metodach i konstruktorach :)
P-65460
DejaVu
» 2012-09-23 23:20:10
Dobra to jeszcze w metodach i konstruktorach :)
To również nie jest wyczerpująca lista.
P-65461
yoogi
» 2012-09-23 23:23:08
eeeee ?
A wyczerpująca będzie taka, że referencja jest "bezpieczna" a wskaźnik nie :)
P-65462
DejaVu
» 2012-09-23 23:24:35
... zmienne też mogą być tworzone przez referencję...
P-65463
« 1 » 2 3
  Strona 1 z 3 Następna strona