通过引用传递后值不变

时间:2019-04-17 05:55:07

标签: c++ variables reference

#include<string.h>
#include<limits.h>
using namespace std;


void v6(char rq,int &cost)
{
    if(rq=='2')
        cost+=1;

    if(rq=='1')
        cost+=2;

    if(rq=='3')
        cost+=3;
}

int main()
{
    int cost=0;
    v6(2,cost);
    cout<<cost;
}

输出: 0

但是,c的值(通过引用传递)没有变化;请解释一下。

也使用了指针,但无济于事

2 个答案:

答案 0 :(得分:4)

我在函数调用中进行的微小更改应该可以为您提供所需的行为

v6('2',cost);

您的if语句选中char而不是数字。您要么应用上述更改,要么更改if语句

void v6(char rq,int &cost)
{
    if(rq==2)
        cost+=1;

    if(rq==1)
        cost+=2;

    if(rq==3)
        cost+=3;
}

答案 1 :(得分:2)

您在函数调用中传递了Numeric 2而不是char 2

v6(2,cost);必须替换为v6('2',cost);

传递2传递的ASCII等效值2(http://www.asciitable.com/)。

等效于'2'的ASCII码为50。因此,v6(50,cost);v6('2',cost);将为您提供相同的结果。