fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int* f(int& i) // referencja - masz 'widok' na oryginalna zmienna,
  6. // modyfikujesz ja i zwracasz pointer na oryginal
  7. {
  8. i += 4;
  9. return &i;
  10. }
  11.  
  12. int g(int i) // kopia - modyfikujesz kopie i ja zwracasz
  13. {
  14. return i *= 2;
  15. }
  16.  
  17. void h(int* i) // bierzesz pointer na zmienna i ja zmieniasz - modyfikujesz oryginal
  18. {
  19. *i -= 3;
  20. }
  21.  
  22. int main()
  23. {
  24. int A;
  25. A = g(3);
  26. cout << A; // A= 6
  27. A--;
  28. cout << A; // A= 5
  29. h(&A);
  30. cout << A; // A= 2
  31. (*f(A))--; // f(A) modyfikuje A i zwraca jego adres - pointer,
  32. // przez operator * robisz dereferencje (idziesz do obiektu)
  33. // i zmniejszasz oryinal
  34. cout << A; // A= 5 dlaczego?
  35. g(A);
  36. cout << A;
  37. } // A=5 ale dlaczego?
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
65255