#include<stdio.h>
int main()
{
char *s1 = "hello"; char s2[] = "hello";
//s1[0]='a'; //×运行ERROR( 这一句编译可过,但是运行直接就崩了)
s2[0]='a'; //OK
puts(s1);
puts(s2);
return 0;
}
两者的区别悬殊!char *s1="hello"这个是一个字符串常量,你可以像一个字符数组一样使用它,但是你不能更改这个字符串的值比如 s1[0]='e'这样不行,char s2[]="hello";是一个字符串变量,可以被修改。
不过,这两者再作函数的形参的时候是完全等价的。
void function(char *pstr); void function(char pstr[]); 可以相当绝对的说这两种完全等价,没有任何区别。