转自:http://zhidao.baidu.com/question/65483282.html
两者的区别悬殊! char *s1="hello"这个是一个字符串常量,你可以像一个字符数组一样使用它,但是你不能更改这个字符串的值比如 s1[2]='e'这样不行,s1 放在全局数据区。 char s2[]="world";是一个字符串变量,可以被修改,s2 是函数的栈空间区域,函数执行完成,这个空间就没了。
这两者再作函数的形参的时候是完全等价的。 void function(char *s1); void function(char s1[]); 可以相当绝对的说这两种完全等价,没有任何区别。