1.sizeof(s),得出的长度不同。
对于字符串得到的是指针类型的长度(为4)。
对于字符数组得到的是字符数组的长度。
2。char* s=”hello”;
s[0]='a';//wrong!运行时显示为“段错误”。
字符数组是可以修改的。
3。作为返回值时不同。
char* test(){
char ch[5]={'h','i'};//gcc 会警告:返回局部变量。
return ch;
}
这个函数是错误的,因为字符数组ch是局部变量,当test调用结束是占用的空间将被释放。
改为:static char ch[5]={'h','i'};
或: char* ch=”hi”;
就可以了。
4。声明外部变量时,字符数组和字符串为不同类型。
File1.中:char version[]=”2.12”;
File2. : char* version=”2.12”;
File3. : extern char* version;
实际上,File3中version只能引用File2中的值,而引用File1中的 version时导致类型冲突。