关于C语言中取地址符号的疑问???
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#define ERROR 0;
#define OK 1;
const unsigned int STACK_INIT_SIZE=100;//为什么用这个:#define STACK_INIT_SIZE 100;不行??
const unsigned int STACKINCREMENT=10;//与上面的问题一样??
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack(SqStack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE * sizeof(SqStack));
if(!s.base)
return ERROR;
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
int Push(SqStack &s,int e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(int *)realloc(s.base,(STACK_INIT_SIZE+STACKINCREMENT) * sizeof(SqStack));
if(!s.base)
return ERROR;
s.top=s.base+STACK_INIT_SIZE;
s.stacksize+=STACKINCREMENT;
}
*s.top=e;
s.top++;
return OK;
}
int Pop(SqStack &s,int &e)//这里为什么用&e ,而用e不行?
{
if(s.top==s.base)
return ERROR;
s.top--;
e=*s.top;
return OK;
}
int StackEmpty(SqStack s)
{
if(s.top==s.base)
return OK;
return ERROR;
}
void Convertion()
{
int N;
SqStack MyStack;
InitStack(MyStack);
printf("输入您要转换的数:");
scanf("%d",&N);
while(N)
{
Push(MyStack,N%2);
N=N/2;
}
printf("转换后的输出如下:");
while(!StackEmpty(MyStack))
{
int temp;
Pop(MyStack,temp);
printf("%d",temp);
}
printf("\n");
}
void main()
{
Convertion();
}