数据结构 C语言 栈 Status Pop(SqStack &S,SElemType &e)

Status Pop(SqStack &S,SElemType &e)
e前面的&是什么作用

&与它前面的类型SElemType一起把变量e定义为一种引用类型的变量,引用类型是C++相较于C语言新增加的语言特性,具有与指针类似的作用。把一个变量定义为引用类型的方法与定义为指针类型的方法也类似,把*改成&就行了。比如:
//全局变量
int n=1;
void f1(int n)
{
n=2;
}
void f2(int *n)
{
*n=3;
}
void f3(int &n)
{
n=4;
}
f1(n);
f2(&n);
//调用参数为引用类型的函数时,直接传递实参名作参数就行了
f3(n);
函数f2和函数f3的调用都会改变全局变量n的值。追问

f2(int*n)函数本来参数是整数指针类型的,而n是整型的变量,用了&之后,n就能作为f2的参数了,然后n的值就能改变为3。可是这有什么用呢
我在主函数中定义了一个SElemType类型的变量e,定义了一个SqStack的 S这个函数在主函数上方,当我调用的时候Pop(S,e),发现如果把pop函数声明里的&去掉,结果就不对,为什么啊,我会加悬赏

追答

Status Pop(SqStack &S,SElemType &e)这样是将e定义为引用类型。假设在主函数中有定义SElemType e;当调用函数Pop(S,e);时可改变实参e的值,因为引用类型的参数传递是传址,改变形参的值就是改变的实参的值,就像例子中对函数f3(n);的调用。如果把Pop函数声明里的&去掉,则调用函数Pop(S,e);时是传值,改变形参的值就不能改变实参的值了,就像例子中对函数f1(n);的调用。

追问

嗯谢谢

追答

不用谢。

温馨提示:答案为网友推荐,仅供参考
相似回答