#include <iostream>
using namespace std;
// by pointer
void printAdressesPtr(int* p1, int* p2) {
std::cout << "p1 - ptr: " << p1 << " - value: " << *p1 << std::endl;
std::cout << "p2 - ptr: " << p2 << " - value: " << *p2 << std::endl;
// while now the addresses of p1 and p2 are different
std::cout << "p1 - ptr adr: " << &p1 << std::endl;
std::cout << "p2 - ptr adr: " << &p2 << std::endl;
}
// by reference
void printAdressesRef(int& r1, int& r2) {
std::cout << "r1 - ref: " << &r1 << " - value: " << r1 << std::endl;
std::cout << "r2 - ref: " << &r2 << " - value: " << r2 << std::endl;
}
// by value. this will not work, since values are copied.
void printAdressesVal(int v1, int v2) {
std::cout << "v1 - ref: " << &v1 << " - value: " << v1 << std::endl;
std::cout << "v2 - ref: " << &v2 << " - value: " << v2 << std::endl;
}
int main() {
// your code goes here
int* ptr1 = new int(123);
int* ptr2 = ptr1;
printAdressesPtr(ptr1, ptr2);
printAdressesRef(*ptr1, *ptr2);
printAdressesVal(*ptr1, *ptr2);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gYnkgcG9pbnRlcgp2b2lkIHByaW50QWRyZXNzZXNQdHIoaW50KiBwMSwgaW50KiBwMikgewoJc3RkOjpjb3V0IDw8ICJwMSAtIHB0cjogIiA8PCBwMSA8PCAiIC0gdmFsdWU6ICIgPDwgKnAxIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCAicDIgLSBwdHI6ICIgPDwgcDIgPDwgIiAtIHZhbHVlOiAiIDw8ICpwMiA8PCBzdGQ6OmVuZGw7CgkgICAgICAKCS8vIHdoaWxlIG5vdyB0aGUgYWRkcmVzc2VzIG9mIHAxIGFuZCBwMiBhcmUgZGlmZmVyZW50CiAgICBzdGQ6OmNvdXQgPDwgInAxIC0gcHRyIGFkcjogIiA8PCAmcDEgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJwMiAtIHB0ciBhZHI6ICIgPDwgJnAyIDw8IHN0ZDo6ZW5kbDsKfQoKLy8gYnkgcmVmZXJlbmNlCnZvaWQgcHJpbnRBZHJlc3Nlc1JlZihpbnQmIHIxLCBpbnQmIHIyKSB7CglzdGQ6OmNvdXQgPDwgInIxIC0gcmVmOiAiIDw8ICZyMSA8PCAiIC0gdmFsdWU6ICIgPDwgcjEgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJyMiAtIHJlZjogIiA8PCAmcjIgPDwgIiAtIHZhbHVlOiAiIDw8IHIyIDw8IHN0ZDo6ZW5kbDsKfQoKLy8gYnkgdmFsdWUuIHRoaXMgd2lsbCBub3Qgd29yaywgc2luY2UgdmFsdWVzIGFyZSBjb3BpZWQuCnZvaWQgcHJpbnRBZHJlc3Nlc1ZhbChpbnQgdjEsIGludCB2MikgewoJc3RkOjpjb3V0IDw8ICJ2MSAtIHJlZjogIiA8PCAmdjEgPDwgIiAtIHZhbHVlOiAiIDw8IHYxIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCAidjIgLSByZWY6ICIgPDwgJnYyIDw8ICIgLSB2YWx1ZTogIiA8PCB2MiA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCglpbnQqIHB0cjEgPSBuZXcgaW50KDEyMyk7CglpbnQqIHB0cjIgPSBwdHIxOwoJCglwcmludEFkcmVzc2VzUHRyKHB0cjEsIHB0cjIpOwoJcHJpbnRBZHJlc3Nlc1JlZigqcHRyMSwgKnB0cjIpOwoJcHJpbnRBZHJlc3Nlc1ZhbCgqcHRyMSwgKnB0cjIpOwoJCglyZXR1cm4gMDsKfQ==