I understand that the Nullable type is a struct whose identifier (either Nullable<T> or T?) be used to declare value type variables that can be assigned a null reference, which is something that normally cannot be done with value type variables, since, at least if I am not mistaken, by definition a value type variable always represents the same memory address and that memory address is always going to have a value of the variable's type, even if it's the default value of the variable.
Reference types, on the other hand, and if I am not mistaking, can represent different memory addresses, as long as the memory addresses contain values of the same type as the reference type variable; by default, if I am not mistaken, and yes, I realize that I could be wrong about this part, they represent the memory address that contains the null reference, which is the only value that can be represented by the null type.
Now, back to Nullable type variables, given that they are value type variables, how does their internal memory address representation mechanism differ from that of a typical value type variable and how is it similar to that of a reference type variable? behind the scenes, is it just a value type variable like all others except that it has the privilege of being able to represent, by default, the memory address that contains the null reference, or is it just a value type variable, also like all other value type variables, except that the one memory address it always represents also can store the null reference?
(I realize that I might be overly confused about the memory address(s) where the null reference is stored. I'm assuming that there is one and only one memory address per application domain and specially designated at run-time, that always contains the null reference, and that's the memory address that all reference type variables by default represent, even though the type of the value in the memory address is the null type and not the type of the reference type variable itself.)