视觉错误:变量或字段'Palindrome'在 C++ 中声明为 void

visual error: variable or field 'Palindrome' declared void in c++

本文关键字:C++ 声明 void Palindrome 字段 视觉 错误 变量      更新时间:2023-10-16

我遇到了这个错误,因此我是新来的C ,我无法理解请帮我!

我正在写一份回文代码这是下面给出的代码:...................

我基本上在这里使用一些不进行直接方式的额外概念。如果有人可以发布正确的代码,他/她是最欢迎的...

//palindrome
#include <cstring>  //or use #include <string.h>
#include <iostream>
using namespace std; 
void Palindrom(string& );
void Palindrome(string& word)// same as (const string& word)
{ 
    int n = word.length();
    string word2;
    char reverse[n]; 
 for(int i = 0; i <=n; i++){
        word[i]=tolower(word[i]);
    }
    word2=word; //now both are small
    for(int i = n-1; i >=0; i--){
        reverse[n-1-i]=word2[i];
        cout<<reverse[n-1-i];
    } 

    for(int i =0; i >n; i++){    //printing reversed 
        cout<< " Reverse:  "<<reverse[i]<<endl;
    } 

    // word is ok and word2 gets reversed  
    for (int i = 0; i <= n; i++){ 
       if(word[i]==reverse[i])
       {
           cout<<"nit is palandrome ";
       }
    cout<<"nit is not a palindrome ";
    }
}
int main()
{  string k="YuUuy";
   void Palindrome(k);
   return 0;
}

正确调用函数的语法为 Palindrome(k);,而没有void。

几个言论:

  • 获得一个好的C 书。
  • // same as (const string& word)是不正确的。

  • 您不包括<string>标头。

  • 最好将std::size_t用于索引,但要注意unsigned>=0条件始终是正确的。
  • char reverse[n];是错误的,n必须是一个编译时常数,VLA不是C 标准的一部分。

函数调用不应具有返回类型。将main((函数中的 void Palindrome(k);更改为 Palindrome(k);

在声明数组时,表达式应具有恒定值。因此,您不能使用char reverse[n];。完成后,将其更改为char *reverse = new char[n];并使用delete[] reverse;进行处理。

我建议您使用智能指针。您还应该看一下std::string,而不是使用char的流。