首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-05-29 
char*的参数传入函数/* reverse the parameter */void reverseString2(char *str) {char *end strchar

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

热点排行