Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在函数中调用函数?_C++_Function_Compiler Construction_Reverse_Palindrome - Fatal编程技术网

C++ 如何在函数中调用函数?

C++ 如何在函数中调用函数?,c++,function,compiler-construction,reverse,palindrome,C++,Function,Compiler Construction,Reverse,Palindrome,我试图确定我的代码是否是回文,所以我创建了一个反向函数,然后创建了一个回文函数。我试图将反向字符数组分配到新函数中,但似乎无法将其编译。。。。有什么建议吗? 这是我的回文函数 bool Palindrome(char Characters[], unsigned long length) { char tempstring[62]; tempstring[62] == reverse(Characters); for(int i=0; i <= length; i++)

我试图确定我的代码是否是回文,所以我创建了一个反向函数,然后创建了一个回文函数。我试图将反向字符数组分配到新函数中,但似乎无法将其编译。。。。有什么建议吗? 这是我的回文函数

bool Palindrome(char Characters[], unsigned long length)
{
   char tempstring[62];
   tempstring[62] == reverse(Characters);

   for(int i=0; i <= length; i++){
      if(Characters[i] == tempstring[i])
          return false;
      else
          return true;
   }

}
void reverse(char Characters[], unsigned long length)
{
    char temp;   

    for(int i=0; i<length/2; i++){
        temp = Characters[i];
        Characters[i]=Characters[length-i-1];
        Characters[length-i-1]=temp;

    }
}
bool回文(字符[],无符号长)
{
char tempstring[62];
tempstring[62]==反向(字符);

对于(inti=0;i首先,你有一个输入错误;
=
是一个比较等式,
=
。你应该写

tempstring[62]=反向(字符);

但这仍然不起作用。对于初学者来说,
reverse
是一个
void
函数,因此它不会返回值

最快的修复方法是将该行替换为

reverse(Characters, length);
(注意,我还根据需要传递
length
参数)

最后一件事:如果您组织了文件,使
reverse
出现在
回文
之后,那么您需要使用以下语句向前声明
reverse

void reverse(char Characters[], unsigned long length);

这修复了编译错误。我请您检查运行时行为。

您的错误是行
tempstring[62]==reverse(Characters);
。您不需要双引号。将来,发布编译时收到的错误消息会有所帮助

bool Palindrome(char Characters[], unsigned long length)
{
   char tempstring[62];
   tempstring[62] = reverse(Characters);

   for(int i=0; i <= length; i++){
      if(Characters[i] == tempstring[i])
          return false;
      else
          return true;
   }

}
bool回文(字符[],无符号长)
{
char tempstring[62];
tempstring[62]=反向(字符);

对于(inti=0;i来说,您使这变得非常复杂

只需找到字符串的结尾(
strlen
)。一次从两端读取一个字符,如果它们不匹配,则不是回文。如果索引变得相同或交叉,则完成。这确实是回文

编辑2

然后复制字符串,将其反转并进行比较。

您的错误如下:

tempstring[62] == reverse(Characters);
您编写的
=
表示返回true或false的条件(例如:
如果(5==7)
->false)

但实际上您想要做的是
tempstring[62]=反向(字符);

一个
=
表示相等(
int a=3


两个
=
意味着检查一个条件(例如
if(a==b)
(这就是为什么不在ifs中编写:
if(a=3)
因为它将赋值
a=3
,并且总是进入
如果

首先,您的反向函数不返回任何内容,因此尝试将其返回值赋值给任何内容都是行不通的:

tempstring[62] == reverse(Characters); // won't work as it is attempting to compare a void
tempstring[62] = reverse(Characters); // won't work as it is attempting to assign a void
从更基本的层面来看,回文的测试远没有你所做的那么复杂:

bool Palindrome(char Characters[], unsigned long length)
{
    bool result = true;
    for(int i=0; i < length / 2; i++)
    {
        if (Characters[i] != Characters[length - i - 1])
        {
            result = false;
            break;
        }
    }
    return result;
}
bool回文(字符[],无符号长)
{
布尔结果=真;
对于(int i=0;i
您的主要问题是,即使reverse函数为void(不返回任何内容),您仍试图为tempstring[62]赋值。只需按照Ed Heal的答案来做就可以了。@bathseba没有被调用的长度是多少?@DieterLücking:很抱歉回答不完整。我现在已经解决了这个问题。@user3078582:我已经编辑了,给出了一个更全面的答案。你仍然建议(即使你提到:它也不起作用)
tempstring[62]=反向(字符)是的,这是一个很难回答的问题:你确实想指出==和=之间的区别,尽管在这个例子中它们都不是你想要的。希望粗体类型可以解决这个问题。当我这样做的时候,我还必须声明长度,因为长度在reverse的原型中,这在函数'bool-Pali'中给了我这个错误ndrome(char*,long unsigned int)':Reversal2.cpp:97:19:错误:无效值未被忽略,因为它应该是tempstring[62]=reverse(字符,长度);您的
reverse
函数声明为
void
,但您希望它返回一个值存储在
tempstring
中。您还尝试为索引62分配一个值,从而脱离了
tempstring
数组的末尾。有效的索引从0到61。感谢您的输入,但我希望能够看到图I当我使用另一个函数时,它只是练习而已,我想知道我做错了什么?因为我在main中也调用了同一个反向函数好几次。@edheal@user3078582-见上文,如果没有第一次编辑“记住使用删除”,这将是一个可接受的答案@他想要一个反向函数。第一部分更好solution@EdHeal返回新内容的函数通常不好(除了分配器等)
tempstring[62] == reverse(Characters);
tempstring[62] == reverse(Characters); // won't work as it is attempting to compare a void
tempstring[62] = reverse(Characters); // won't work as it is attempting to assign a void
bool Palindrome(char Characters[], unsigned long length)
{
    bool result = true;
    for(int i=0; i < length / 2; i++)
    {
        if (Characters[i] != Characters[length - i - 1])
        {
            result = false;
            break;
        }
    }
    return result;
}