const int &x = int(12); //legal C++
int *y = &int(12); //illegal to dereference a temporary.
int x = 0;
int &r = x; // int *r = &x;
int *p = &x; // int *p = &x;
int *p2 = &r; // int *p2 = &(*r); // как я уже сказал, *r автоматическое разименование.
assert(p == p2);
int *p = nullptr;
//int &r = nullptr; <--- compiling error, потому что nullptr это не int
int &r = *static_cast<int*>(nullptr); // нормас, только не делайте так
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99