字符串连接,数组,三个数组中只有两个能最终输出值,是为什么?

int main()
{
char m[1000],n[1000];//
char *m={0},*n={0};//
char m[]={0},n[]={0}; //
//这三个到底有什么区别?
scanf("%s%s",m,n);
printf("%s%s\n",m,n);
return 0;
}

char m[1000],n[1000];//
char *m={0},*n={0};//
char m[]={0},n[]={0}; //
三个重名的数组,第二个是指针数组,编译也通不过的.