在1.c中定义
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status Create(BiTree T){
T=(BiTree)malloc(....);
}
在main.c中
main方法中调用create
BiTNode T;
create(&T);
这样调用会出现错误,错误原因是因为声明这个结构体变量的时候就已经有了内存大小,有了指针的地址,而出现create方法中重新寻找一个地址的时候无法改变声明时候产生的那个地址。
但是如果
BiTree T;
create(T);
同样会出现问题;
怎样解决呢?
是因为传过去一个指针变量是被复制了一份变量
create中的形参就是复制了这个指针地址的变量
而如果我们直接申请的指针地址赋值给形参的话
外面真正的指针变量是没有改变的,只是这个形参的指针改变了。
在程序的外面定义的那个指针其实并没有改变。
如何改变程序外面的那个指针变量的值呢?
求高手来!
第1个回答 2018-04-22
main中:
BiTNode *T;
create(T);
Status Create(BiTree *T){
T=(BiTree*)malloc(....);
}
BiTNode *T;
create(T);
Status Create(BiTree *T){
T=(BiTree*)malloc(....);
}