关于指针的一些误区
刚开始接触c语言时明白了在函数中交换两个变量的值需要用到一级指针,但是我忽略了就算用了一级指针也不过是将指针保存的值复制后传到函数中只是因为指针中保存的是变量的地址值,所有可以通过地址值来修改变量,但是本质上仍然是值的传递,所以在我写用链栈计算后缀表达式的程序时我直接将参数设置为结点指针在入栈时元素其实并没有入栈;
int Push(Linkstack*top,double x){
Linkstack *s=new Linkstack;
s->data=x;
s->next=top;
top=s;
return 1;
}
double Calculate(string postfix){
string temp;
Linkstack *top=nullptr;
double temp1,temp2,temp3,sum;
int i;
for(i=0;i<postfix.size();i++){
if(isdigit(postfix[i])||postfix[i]=='.'){
temp+=postfix[i];
}else if(postfix[i]==' '){
temp3=stod(temp);
Push(top,temp3);
temp.erase(0);
}else if(postfix[i]=='+'){
temp1=Pop(top);
temp2=Pop(top);
sum=temp1+temp2;
Push(top,sum);
}else if(postfix[i]=='-'){
temp1=Pop(top);
temp2=Pop(top);
sum=temp1-temp2;
Push(top,sum);
}else if(postfix[i]=='*'){
temp1=Pop(top);
temp2=Pop(top);
sum=temp1*temp2;
Push(top,sum);
}else if(postfix[i]=='/'){
temp1=Pop(top);
temp2=Pop(top);
sum=temp1/temp2;
Push(top,sum);
}
}
sum=Pop(top);
return sum;
}
应该传指针的地址进函数,特记此篇引以为戒。