C++的结构体指针传参

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指针返回回去就可以改变值了。

猜你喜欢

转载自www.cnblogs.com/dayatuswitch/p/8944619.html