C++函数调用的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/13 21:37:10
int A(int x,int &y)
{
····
}
用 A(2,j+3)调用对不对?为什么?

因为j+3是作为一个临时的值,不是一个变量,所以不能传给int& y,因为函数有可能修改y,也就是j+3的值,这种修改是不合法的。
但是并不是说临时值不能传引用。只要有const的保护就可以了。

函数原型改为int A(int x,const int &y);就可以传引用。

不可以,
y是一个可以预料的地址,而对于y+3来说,其地址是不可预料的,可能会被修改掉。这样的话,可能破坏掉其它不该破坏掉的数据。
就好像你给自己的饭卡充值,可是却用别人的饭卡。

因为j+3是个临时值,这样的值不允许传引用

可以,j+3是个整体,它是把j+3出入到Y的地址里进行运算的,