Kolega @mariush dobrze zauważył, że przekazujesz 0. 0 razy cokolwiek daje 0:P
Widzę, że koleżankę czeka mała powtórka z wskaźników i referencji ;]
Wskaźniki są banalne, jak i referencja i całe programowanie, więc napiszę tak:
- W mainie masz błąd. Twoje:
int suma=0;
- Nie jest wskaźnikiem. Wskaźnik w C++ piszesz w ten sposób:
int * suma;
- Pamiętaj jednak, że takiego zapisu jak powyżej nie wolno Ci do żadnej funkcji przesyłać. Dlaczego ?
- Wskaźnik to zmienna, która zawiera w sobie adres INNEJ zmiennej. Więc musisz stworzyć do niej jakąś zmienną. Dopiero taki kod:
int suma;
int *wskaznik_Do_Sumy;
wskaznik_Do_Sumy=&suma;///Deklaracja wskaznika bez gwiazdki jest jego adresem
byłby poprawny.
- Krótkie wyjaśnienie zapis:
wskaznik_Do_Sumy=&suma;
oznacza:
- Przesyłam do wskaźnika adres zmiennej suma. Ampersand, czyli :
&
- Oznacza w C++ dwie rzeczy, Po pierwsze adres, po drugie referencję. Od tej pory, każda zmiana zmiennej suma, zmieni wskaźnik. Tak samo zmiana wskaznika zmieni sumę. Przeanalizuj poniższy kod, który przygotowałem specjalnie dla Ciebie i powinnaś szybko to zrozumieć :
int *wskaznik;
int suma=10;
wskaznik=&suma;
*wskaznik=100;
std::cout<<"Jak to jest mozliwe? Wynosze 100! "<<suma<<'\n';
suma=15;
std::cout<<"Jak to jest mozliwe? Wynosze 15! "<<*wskaznik<<'\n';
- Co do referencji... Jest ona prawie analogiczna jak wskaźnik, z tym że wskaźnik, to zmienna, która ma w sobie adres innej zmiennej. Natomiast refrencja, to po prostu inna nazwa dla zmiennej. Tak przykładowa referencja. O ile we wskaźnikach mogłem zapisać poniżej wskaźnika jego przypisanie do zmiennej, tak tutaj muszę od razu przy stwarzaniu muszę mieć przypisaną jakąś zmienną. Gdy tego nie zrobisz, kompilator wywali Ci błędy.
int suma;
int &refre=suma;
suma=14;
std::cout<<refre;
- Dlaczego więc wymyślono referencję, skoro są wskaźniki ? Cóż, powódów jest kilka. Najważniejszy z nich to bezpieczeństwo. Zabawa wskaźnikami, to trochę jak żonglowanie otwartymi grantami. Pytanie jest nie, czy wybuchną, ale kiedy. Referencja jest też niesamowicie przydatna przy klasach. Przy zaawansowanych projektach, wskaźniki potrafią namieszać, jak kobieta przy programowaniu ;]
- Dzięki referencji można przesyłać oryginały wraz z adresem. Wskaźniki zmieniają tylko wartość, natomiast referencje już adres(gdyż sa po prostu inną nazwą).
Co do Twojego kodu... Serce mi krwawi, gdy go czytam, ale spokojnie :) Jeszcze jedna rzecz. Polecenie jest trochę mało precyzyjne. Zwracanie w programowaniu oznacza polecenie return. Są dwa możliwe przypadki. Po pierwsze funkcja będzie zwracała referencję, więc kod wyglądałby w ten sposób:
#include <iostream>
int &zwroc_Referencje (int &refs)
{
refs=15;
return refs;
}
int main()
{
int suma=10;
std::cout<<zwroc_Referencje(suma)<<'\n';
return 0;
}
Kod pisany z ręki, więc błędy mogą być ;] Wskaźniki możesz zrobić analogicznie jak referencję. Może trochę trudniej będzie, ale powinnaś dać radę :) Przeanalizuj na spokojnie to co napisałem, a powinno być dobrze. Pozdrawiam :)