读书人

char*的参数传入函数解决方案

发布时间: 2012-05-29 12:16:00 作者: rapoo

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了。

读书人网 >C++

热点推荐