#include <iostream>
using namespace std;
int main() {
int x = 10;
int* x_ptr = &x; //take the address of x, assign it to a pointer to an int (int *)
int& x_ref = x; //create a reference to an integer (int&) and point it to x
x_ref = 12; //you can use refs just like the original variable, no need to dereference
cout << x_ref << endl;
*x_ptr = 14; //you have to dereference a pointer before you can assign a value to the object
cout << *x_ptr << endl;
int y = 40;
x_ptr = &y; //you can set a pointer to point to a different address
cout << *x_ptr << endl;
//&x_ref = y; //there's no way to point x_ref anywhere else, the compiler will actually use this fact to make various optimizations
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgeCA9IDEwOwoJaW50KiB4X3B0ciA9ICZ4OyAvL3Rha2UgdGhlIGFkZHJlc3Mgb2YgeCwgYXNzaWduIGl0IHRvIGEgcG9pbnRlciB0byBhbiBpbnQgKGludCAqKQoJaW50JiB4X3JlZiA9IHg7ICAvL2NyZWF0ZSBhIHJlZmVyZW5jZSB0byBhbiBpbnRlZ2VyIChpbnQmKSBhbmQgcG9pbnQgaXQgdG8geAoJCgl4X3JlZiA9IDEyOyAvL3lvdSBjYW4gdXNlIHJlZnMganVzdCBsaWtlIHRoZSBvcmlnaW5hbCB2YXJpYWJsZSwgbm8gbmVlZCB0byBkZXJlZmVyZW5jZQoJY291dCA8PCB4X3JlZiA8PCBlbmRsOwoJKnhfcHRyID0gMTQ7IC8veW91IGhhdmUgdG8gZGVyZWZlcmVuY2UgYSBwb2ludGVyIGJlZm9yZSB5b3UgY2FuIGFzc2lnbiBhIHZhbHVlIHRvIHRoZSBvYmplY3QKCWNvdXQgPDwgKnhfcHRyIDw8IGVuZGw7CgkKCWludCB5ID0gNDA7Cgl4X3B0ciA9ICZ5OyAvL3lvdSBjYW4gc2V0IGEgcG9pbnRlciB0byBwb2ludCB0byBhIGRpZmZlcmVudCBhZGRyZXNzCgljb3V0IDw8ICp4X3B0ciA8PCBlbmRsOwoJLy8meF9yZWYgPSB5OyAvL3RoZXJlJ3Mgbm8gd2F5IHRvIHBvaW50IHhfcmVmIGFueXdoZXJlIGVsc2UsIHRoZSBjb21waWxlciB3aWxsIGFjdHVhbGx5IHVzZSB0aGlzIGZhY3QgdG8gbWFrZSB2YXJpb3VzIG9wdGltaXphdGlvbnMKCQoJcmV0dXJuIDA7Cn0=