Why can two string literals separated by a space, tab or \"\\n\" be compiled without an error?
int main()
{
char * a = \"aaaa\" \"bbbb\";
}
If you see e.g. this translation phase reference in phase 6 it does:
Adjacent string literals are concatenated.
And that's exactly what happens here. You have two adjacent string literals, and they are concatenated into a single string literal.
It is standard behavior.
It only works for string literals, not two pointer variables, as you noticed.