关于指针的一些经验,大家可以了解下

要想将变量传入函数当做函数的参数并且改变他的值,那么就必须传入这个变量的指针,如果只转入它本身,那么实际传入函数的是变量的复制,改变这个变量的复制是无法改变他本身的,例如这里的初始化函数int InitStack(sqStack *s),如果声明变量sqStack *s,然后调用InitStack(s),s是不变的,也就没有对应的内存空间,可以声明sqStack s,调用InitStack(&s),也可以声明sqStack* s,调用InitStack(&s),例如:

#include <stdio.h>
#include <stdlib.h>
#define Stack_Size 100
#define ok 1
#define ERROR 0
typedef struct Stack
{
int elem[Stack_Size];
int top;
}sqStack;
int InitStack(sqStack **s)//初始化
{
if((*s=(sqStack*)malloc(sizeof(sqStack)))==NULL)
return ERROR;
(*s)->top=-1;
return ok;
}
int Push(sqStack *s,int e)//入栈
{
if(s->top>=Stack_Size-1)
return ERROR;
else
{
s->top++;
s->elem[s->top]=e;
return ok;
}

}
int Pop(sqStack *s,int *e)//出战
{
if(s->top<0)
return ERROR;
else
{
*e=s->elem[s->top];
s->top--;
return ok;
}
}
int StackEmpty(sqStack *s)//判断栈空
{
if(s->top==-1)
return ok;
else
return ERROR;
}
main()
{
sqStack *s;
int ch,x;
InitStack(&s);
ch=getchar();
while(ch!='\n')
{
Push(s,ch);
ch=getchar();
}
while(!StackEmpty(s))
{
Pop(s,&x);
printf("%c",x);
}
printf("\n");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值