百科:http://baike.baidu.com/view/65101.htm#3
如题,一直纠结在函数参数时“&”的功能,写个栈感受了一下
a.
void ClearStack1(SqStack &S)
{
S.top=S.base;
n1=S.top-S.base;
}
b.
void ClearStack2(SqStack S)
{
S.top=S.base;
n2=S.top-S.base;
}
int main()
{
ClearStack1(S);
m1=S.top-S.base;
ClearStack2(S);
m2=S.top-S.base;
}
如果在主函数中调用ClearStack()函数,m1的值不一定为0,而m2=0;n1=n2=0
可以看出,在需要修改栈元素的时候要用“&”,而只需要输出函数值的时候不需要“&”
此外,“&”还表示“与”(类似点乘)运算,即:1&1=1,0&0=0&1=1&0=0
注:详情见谭浩强《C程序设计》第12章 位运算