typedef struct node
{
int n;
node *left;
}*tnode;
传参的时候注意用**
void init(node **nn);
int main()
{
tnode nna;
init(&nna);
cout<<nna->n<<endl;
return 0;
}
void init(node **nn)
{
*nn=(tnode)malloc(sizeof(node));
(*nn)->n=0;
(*nn)->left=NULL;
}
因为传的是*就只是形参,并不会改变这个地址上真正的值。
或者用另一个方法:
int main()
{
tnode nna,nnb;
init(&nna);
nnb=initb(nnb);
cout<<nna->n<<" "<<nnb->n<<endl;
return 0;
}
node* initb(node *nn)
{
nn=(tnode)malloc(sizeof(node));
nn->n=1;
nn->left=NULL;
return nn;
}
把node指针返回回去就可以改变值了。