函数的定义中的参数什么时候加&

定义一个函数的时候,他里面的参数什么时候用指针形式,什么时候 在形参的前面要加&.例如:定义一个函数
void swap(int x,int y)
{int swap=x;x=y;y=swap;}

而这个函数是不对的,调用的时候总出错啊.究其原因是要在形参的定义中在x,y前加&,为什么啊?

当你想在函数中修改参数值的时候,就在对应的形参前加&.这是引用传递,表面上看起来传的时实参值,实际上传的是实参的指针,这才是真正的"指针传递"
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-27
应该这样声明
void swap(int& x,int &y);
像你那样声明的话在函数调用的时候只会传实参的拷贝进去。
当你在函数体里要改变参数的值时,就将函数参数类型声明为引用或者指针,这样函数体里对参数的操作才能修改参数。本回答被提问者采纳
第2个回答  2009-08-28
参考词条"引用"
相似回答