这是因为"字符"中含有4个字节,外加一个串结束符,需要长度为5的字符数组才可以存储。改为char str[2][5]={"字符","字符"};这样就不会报错了。而char *str[2][3]={"字符","字符"};加个*号,只是存储在常量区的字符指针,就不会报错。共有6个字符指针的存储空间,只使用了其中的2个元素来存储2个地址,当然就不会报错了。