期待'char'之前的primary-expression

时间:2013-04-12 21:51:26

标签: c++

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

1 个答案:

答案 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";