如下图所示的c语言的关于指针问题

在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(....);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网