#include <iostream>
#include <string>
void reverse(char*);
void reverse(char* str)
{
char * end = str;
char tmp;
if (str) {
while (*end) {
++end;
}
}
--end;
while (str < end) {
tmp = *str;
*str++ = *end;
*end-- = tmp;
}
}
int main {
char * string;
string = "Hello";
reverse(string);
std::cout << string;
return 0;
}
您好。我试图测试这个简单的函数并在我声明变量字符串作为char指针的行上得到错误“期望'char'之前的主表达式”。请原谅我是一个新手,可能会犯更多错误。谢谢你的帮助!
答案 0 :(得分:1)
你忘记了main的参数列表,它有两个允许的值:
int main(void) // Option 1
{
// The 'void' is optional; in C++, it's equivalent to "int main()", but there
// is a difference in plain C
...
}
// OR
int main(int argc, char *argv[]) // Option 2
{
// The names of the variables argc and argv can of course be changed; argv
// can also be declared as char**
...
}
您还有一个语义问题,即类似"Hello"
的字符串文字是不可修改的。从const char[]
到char*
的转换已弃用,但应该避免这种情况,如果启用警告,编译器应该警告您。如果您尝试运行代码,则会出现分段错误或访问冲突。
要解决此问题,您应该将string
变量声明为可修改的数组,而不是指针:
char string[] = "Hello";