一个困惑我很久的问题!!!有关指针传址调用
我不太明白,我们在用传址调用时什么时候带回指针只需带回数,什么时候需要带回指针:
比如: (1):栈
struct brack
{
    char*base;
    char*top;
    int stacksize;
};
void init(struct brack*m);
void push(struct brack*m,char c);
int pop(struct brack*m,char*e);
这是为什么就可以把整个栈带回?

(2):二叉树

typedef struct binode
{
char data;
struct binode *lchild,*rchild;
}binode,*bitree;                        //定义树结点结构
typedef struct queuenode
{
bitree ch;
struct queuenode *next;
}queuenode,*queueptr;                   //定义队列结点结构
typedef struct
{
queueptr front;
queueptr rear;
}linkqueue;                             //定义队列指针

//建树
int createbitree(bitree &T,int &sum)
{
char ch;
scanf("%c",&ch);
if(ch==' ')
  T=NULL;
else
{
  if(!(T=(bitree)malloc(sizeof(binode))))
   return 0;
  T->data=ch;
  sum++;
  createbitree(T->lchild,sum);
  createbitree(T->rchild,sum);
}
return 1;
}
这里为什么又要返回数指针啊?

(3)还有我在看代码的时候,假如 子函数void(struct N*n),我怎么判断它是要返回值,还是它的整个参数就是这个指针而不需返回呢?