在C ++中反转char数组导致错误

时间:2011-03-28 15:17:22

标签: c++ arrays string

我使用以下代码来反转char数组。我的代码和错误可以在下面找到。

我的代码:

char * reverseStr(char* s) {
int i=0; //legnth of string
while(s[i]) i++;
char reversed[i];
for(int j=0; j<i; j++) {
    reversed[j] = s[i-j - 1]; //look at this later
}
return *(reversed);
}

错误:

        Compiling...
Compile error: your program did not compile correctly:
program.c: In function 'char* reverseStr(char*)':
program.c:18: error: invalid conversion from 'char' to 'char*'
      --> 17:   }
      --> 18:   return *(reversed);

提前谢谢!

5 个答案:

答案 0 :(得分:6)

您的返回值和类型错误。

此外,您的reversed声明无效,无论如何都会泄漏内存。

此外,不建议计算字符串长度而不是使用std::strlen,标准库具有std::reverse函数来反转字符串。

答案 1 :(得分:2)

好吧,你要返回一个char而不是char *,所以你只返回反向字符串中的第一个字母而不是字符串。这会导致您的错误消息,因为您尝试将char视为char *。

答案 2 :(得分:2)

检查错误消息:

program.c: In function 'int itoa2(int, char*, int)':
program.c:45: error: invalid conversion from 'char' to 'const char*'

它清楚地告诉你错误是什么:从const char *到char

的无效转换

答案 3 :(得分:0)


   strcpy接收(char *,const char *)作为参数。但是,函数的返回类型是char,因此出现错误。
   并且char reverse []被分配在函数的堆栈上,请不要将它用作返回值。

答案 4 :(得分:0)

在您的代码中i不是const

char reverseStr(char* s) {
int i=0; // --->> NOT CONST
while(s[i]) i++;
char reversed[i];
for(int j=0; j<i; j++) {
    reversed[j] = s[i-j - 1]; //look at this later
}
return *(reversed);
}

char reversed[i]; ---&gt; C ++中的可变长度数组?应该在编译时知道i