参数是char *就不行,但是char string[]就可以,为什么?
#include<stdio.h>
void reverse_string(char *string)
{
char *str_tmp;
char ch;
str_tmp = string ;
for(; *str_tmp != '\0' ; str_tmp ++ );
str_tmp--;
for(; str_tmp > string ; str_tmp--,string++)
{
ch =*string;
*string = *str_tmp;
*str_tmp = ch;
}
}
int main()
{
void reverse_string(char *string );
char string[] =" hi ,how are you ! "; //如果改成char *string = "hi ,how are you ! "; 在reverse_string里面的 *string = *str_tmp就会出现段错误。 为什么,求解。
reverse_string( string );
puts(string);
return 0;
}
[解决办法]
char *string = "hi ,how are you ! ";//这种方式的话,使用的字面值模式,只读,不可以修改。string是个指针
char string[] =" hi ,how are you ! ";//这种方式,字符串存储在数组中,可以修改,string是个数组。