Push(&S,e)函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:05:51
栈的进栈函数 谁帮我写下
那个&是什么意思? 引用?还是什么
怎么用的

Push(&s,x)
&放在这是 c语言输入输出
就不用scanf 直接输入了
进栈
s[top]=x;top++

&是取地址运算符

都不知道你的栈的结构是什么,鬼才能写出来

&是取结构体S的地址,因为c语言的函数传的是形参的值拷贝,所以如果不加&,那么你在函数里面对S的操作其实是对一个临时结构体的操作。
例子
struct A{
int i;
};
struct A x;
x.i=0;
void fun1(A y)
{
y.i=1
}
void fun2(A& py)
{
(*py).i=2;
}
//调用
fun1(x);没用x.i还是0
fun2(&x);有用x.i是10

顺序栈:
void push(s,x)
{
if(stackfull(s))
Error("stack overflow");//上益,退出运行
s->data[++s->top]=x;
}

&取址

用在你那个PUSH函数中,多半是要对S这块所引用的地址内容进行修改操作的,众所周知的,如果是传值,那么修改后的返回后,就没的了。。。