视觉错误:变量或字段'Palindrome'在 C++ 中声明为 void
visual error: variable or field 'Palindrome' declared void in c++
我遇到了这个错误,因此我是新来的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
的流。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 在函数内部的声明中初始化数组,并在外部使用它
- Visual Studio中的函数声明和函数定义问题
- c++类声明时,相同的例程,不同的成员变量类型
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别