C ++指针与整数编译错误相比较

时间:2014-09-19 07:49:39

标签: c++

我的教授要求我们在c ++中使用while函数来编写我们正在编写的代码。我不断返回相同的错误,所以我写了一个简单的简单代码来理解while循环。仍然停留在这一部分。它显然不是我的程序的结束,我只是陷入while函数。有什么想法吗?

#include <iostream>
#include <cstdlib>

using namespace std;

void response (){
    cout<<" Continue loop function?\n";
    cout <<"y - yes\nn - no\n";
    char response='y';
    cin>> response;
    return;
}
int main (){
    response ();
    while (response=='y')
    return 0;

}

3 个答案:

答案 0 :(得分:2)

您无法访问response中的本地main()变量功能。

在这一行

 while (response=='y')

response被解释为response()函数的地址,与导致您看到错误的'y'进行比较。


正如其他人所说,你应该有这样的东西

char response (){
    cout<<" Continue loop function?\n";
    cout <<"y - yes\nn - no\n";
    char resp='y';
    cin >> resp;
    return resp;
}
int main (){
    while (response()=='y'); // << also note the semicolon here
    return 0;

}

答案 1 :(得分:2)

这里有几个问题。您的主要功能应该如下所示:

int main()
{
    while (response() == 'y')
    { //must have either an empty body or a semicolon here, 
      //otherwise our return statement will become the loop body!
    }

    return 0;
}

此外,您的response()函数应返回局部变量response,以便将其值返回main。由于范围原因,您无法在响应函数之外使用response变量。

你的(错误的)主要功能当前做的是调用response()函数,然后尝试将你的响应函数与char文字'y'进行比较。但是,这不是比较刚从函数返回的值,而是比较函数本身的内存地址(指针)。

C ++允许您使用相同的变量和函数,但这通常是个坏主意。您可能希望为response()函数或response局部变量指定其他名称。

答案 2 :(得分:1)

正在等待布尔值。为了比较&#39; y&#39;为了响应,你必须将返回类型从void更改为char:

char response (){
    cout<<" Continue loop function?\n";
    cout <<"y - yes\nn - no\n";
    char response='y';
    cin>> response;
    return response;
}