Yes and the type system which is defined by the language (see the language
hook, types_compatible_p) so, the types are considered compatiable.
No, the *pointers* may be compatible, but the *types* are not!
You can't have a MODIFY_EXPR whose RHS is char and LHS is an array of
char, especially one of unknown size.