ListDelete(&L,i,&e)和GetElem(L,i,&e)两个函数原型中,L前面什么时候需要加&,请高手详细解释 谢谢!

如题所述

该加的时候就加
当你只是按参数传递时就不加,这时不会改变实参的值
当你按地址传递时就加,这时会形参改变时实参就改变追问

不好意思。。还是不太懂
举个例子 Status GetElem_L(LinkList L, int i,ElemType &e)比如这个声明 形参L没有&,
Status ListInsert_L(LinkList &L,int i,ElemType e)这个L就有,就是怎么判断参数是否需要按地址传递,谢谢!

追答

需不需要是你说了算,你想要了就加,打个比方:
fun( int &i)
{
i=5;
}
然后调用这个函数:
int a=4;
fun(a);
这样a和i的值就都为5了。但是如果不加&
那么i的值为5,a的值不变还为4;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-10
当需要形参的值改变时,实参也同时跟着改变,这是就要用到&
当形参的值改变,而实参的值不改变,就不要&
第2个回答  2011-08-10
当ListDelete函数相对L所指的值进行修改时就不用传地址(&L),要是想修改L的值(L的指向)时就传L的地址。追问

我的意思是在函数原型中的形参 什么时候加& 谢谢

相似回答