主题:一个困惑我很久的问题!!!有关指针传址调用
一个困惑我很久的问题!!!有关指针传址调用
我不太明白,我们在用传址调用时什么时候带回指针只需带回数,什么时候需要带回指针:
比如: (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),我怎么判断它是要返回值,还是它的整个参数就是这个指针而不需返回呢?
我不太明白,我们在用传址调用时什么时候带回指针只需带回数,什么时候需要带回指针:
比如: (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),我怎么判断它是要返回值,还是它的整个参数就是这个指针而不需返回呢?