Only those values that are also allowed for untyped constants (ordinals, floating point values, strings, sets) are allowed as default values.
Your first attempt failed because you tried to change the type to another type, even if it is the same. You can only define a default value not a default type..
C1 here is a type not a variable.
The second attempted work because NIL is a value not a type which equals a zero pointer.
You can only define a default value not a default type..