fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // by pointer
  5. void printAdressesPtr(int* p1, int* p2) {
  6. std::cout << "p1 - ptr: " << p1 << " - value: " << *p1 << std::endl;
  7. std::cout << "p2 - ptr: " << p2 << " - value: " << *p2 << std::endl;
  8.  
  9. // while now the addresses of p1 and p2 are different
  10. std::cout << "p1 - ptr adr: " << &p1 << std::endl;
  11. std::cout << "p2 - ptr adr: " << &p2 << std::endl;
  12. }
  13.  
  14. // by reference
  15. void printAdressesRef(int& r1, int& r2) {
  16. std::cout << "r1 - ref: " << &r1 << " - value: " << r1 << std::endl;
  17. std::cout << "r2 - ref: " << &r2 << " - value: " << r2 << std::endl;
  18. }
  19.  
  20. // by value. this will not work, since values are copied.
  21. void printAdressesVal(int v1, int v2) {
  22. std::cout << "v1 - ref: " << &v1 << " - value: " << v1 << std::endl;
  23. std::cout << "v2 - ref: " << &v2 << " - value: " << v2 << std::endl;
  24. }
  25.  
  26. int main() {
  27. // your code goes here
  28.  
  29. int* ptr1 = new int(123);
  30. int* ptr2 = ptr1;
  31.  
  32. printAdressesPtr(ptr1, ptr2);
  33. printAdressesRef(*ptr1, *ptr2);
  34. printAdressesVal(*ptr1, *ptr2);
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
p1 - ptr: 0x9a0b008 - value: 123
p2 - ptr: 0x9a0b008 - value: 123
p1 - ptr adr: 0xbffe9d10
p2 - ptr adr: 0xbffe9d14
r1 - ref: 0x9a0b008 - value: 123
r2 - ref: 0x9a0b008 - value: 123
v1 - ref: 0xbffe9d10 - value: 123
v2 - ref: 0xbffe9d14 - value: 123