Originally Posted by
Niccolo
However, the compile time formation of "(*doublepointer)->value" is a double de-reference. This is because (*doublepointer) is a pointer to a list, like pointer. If pointer were assigned to a correct memory location for a list instance, "pointer->value" is a way of writing "the value member of the list pointer points to". Put another way, it's like "(*pointer).value". To that end, if doublepointer is pointing to a valid "pointer", itself properly pointing to an instance of "list", then "(**doublepointer).value" is the same as "(*pointer).value", which is the same as (*doublepointer)->value which is the same as "pointer->value".