0
#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' 之前出现主表达式”。请原谅我是新手,可能会犯更多错误。谢谢你的帮助!

4

1 回答 1

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**
    ...
}

您还有一个语义问题,即像 like 这样的字符串文字"Hello"是不可修改的。不推荐使用从const char[]to的转换char*,但应该避免这种情况,如果您启用警告,您的编译器应该警告您。如果您尝试运行代码,您将遇到分段错误或访问冲突。

要解决这个问题,您应该将string变量声明为可修改数组,而不是指针:

char string[] = "Hello";
于 2013-04-12T21:54:23.400 回答