char *s1="hello"这个是一个字符串常量,你可以像一个字符数组一样使用它,但是你不能更改这个字符串的值比如 s1[2]='e'这样不行, char s2[]="hello";是一个字符串变量,可以被修改。 前者在编译时确定,后者在运行时确定 不过,这两者再作函数的形参的时候是完全等价的。 void function(char *pstr); void function(char pstr[]); 可以相当绝对的说这两种完全等价,没有任何区别。