char*的参数传入函数
/* reverse the parameter */
void reverseString2(char *str) {
char *end = str;
char tmp;
char tmp2;
if (str) {
while (*end) end++;
end--;
while (str < end) {
tmp = *str;
*str++ = *end;
*end-- = tmp;
}
}
}
int main(int argc, char **argv) {
char *test = (char*)"abcdefg";
reverseString2(test);
printf("%s\n", "abcdefg");
return EXIT_SUCCESS;
}
这段程序会报错诶,报在 *str++ = *end
好像是因为改变了传入的*str
我看到一本书上是这么用的,想问一下是因为main函数里面的char* test是常值的么?还是因为编译器不同,所以书上事例可以通过,我用的g++就没办法通过呢?
谢谢!
[解决办法]
char *test = (char*)"abcdefg";
"abcdefg"是常量,在静态存储区。
把你的代码的
char *test = (char*)"abcdefg";
改成:
char test_test[]="abcdefg";
char *test=test_test;
就ok了。