char ch[5]表示的是定义了一个字符数组(即字符串),数组单元有5个,每个单元都是字符型,由于字符串是用\0作结束的,5个单元的字符数组实际上能完整存储的只能是长度不超过4个字符的字符串,多了的话就要占用其他单元了(这些单元有可能会被系统分配给其他变量,而能够用来存储字符串的就是你定义的这5个单元的字符数组),可能会出现溢出,也就是有时候会出现输出的字符串后面有乱码
char ch表示定义了一个字符变量,用scanf为其赋值的话应该用%c,即scanf("%c",&ch),它只能表示一个字符
char ch[]数组定义不允许[]里为空
char ch[1]表示的也是一个字符数组,所以你可以输入字符串,同样随便输入就有可能溢出