They are implemented using references, which are essentially (excluding syntactic) pointers that you cannot execute using pointer arithmetic (in some languages they cannot be empty either). In many languages, references are the standard way to use variables, unlike C ++, where the default value is a value.