通过引用传递后值不会更改

Value doesn't change after passing by reference

本文关键字:引用      更新时间:2023-10-16
#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的值(通过引用传递(不会改变;请解释如何更改。

也使用指针,但无济于事

我的函数调用中的微小变化应该会给你你想要的行为

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;
}

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

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

传递2传递相当于 2 (http://www.asciitable.com/( 的 ASCII

相当于 '2' 的 ASCII 在数字上为 50。因此,v6(50,cost);v6('2',cost);都会给您相同的结果。