This is just an experiment for educational purposes. I am printing the value of a pointer on a 64-bit system, but my output has only 12 hex digits! I know that a pointer (or memory address) on a 32-bit system takes up 32 bits in size, being capable of addressing 2^32 possible distinct memory addresses. Similarly, a pointer on a 64-bit system ought to take up 64 bits, 8 bytes, or 16 nibbles. Since a nibble corresponds to a hex digit, the output should have 16 hex digits.
enum { NIBBLES_IN_BYTE = 2 };
int num1 = 5;
int* ptr1 = &num1;
cout << ptr1 << endl;
cout << sizeof(ptr1) * NIBBLES_IN_BYTE << endl;
Output:
0x7fff3751e858
16