计机羊咩咩 发表于 2014-10-8 00:21:47

指针做形参 并带回地址的问题

蒽问题是酱紫的{:1_1:}

比如在   int Reading(POSITION *Head, POSITION *Tail){...}   这个函数体
在函数内部创建了一个链表需要带回头指针和尾指针   然而函数只能返回一次
于是打算以外部指针做参数然后获取链头和链尾的地址

如Reading(Head, Tail);酱紫去调用

最后却忽略了形参会被释放掉   当函数结束之后两个外部指针仍为NULL
求各路大神支招   获取链头和链尾的地址


恋色天空 发表于 2014-10-8 00:21:48

使用结构体包涵头指针和尾指针

花落、季 发表于 2014-10-8 11:26:27

你为什么不在这个函数外面创建链表。。函数返回释放的不是形参 是局部变量 你先搞懂函数再说吧:sweat:

Thirteen 发表于 2014-10-8 11:39:15

实参是地址,创建链表之后,该地址段里创建了链表内容,地址内存的值修改了,但是形参没有传回地址。
第一种方法:可以用指向指针的指针。
POSITION *Head;//你的主函数应该有这个定义行
POSITION *Tail;
。。。。。
加这个
POSITION **HEAD=&Head;
POSITION **TAIL=&Tail;
Reading(HEAD,TAIL);
即,创建指向地址的指针HEAD指向Head,TAIL指向Tail;
函数的形参改写int Reading(POSITION **Head, POSITION **Tail){...}   
那你在函数体里面调用Head时,之前的*Head就要改写**Head;
第二种方法:用引用;
POSITION *Head;
POSITION *Tail;
。。。。。
调用函数不变;
定义函数修改为:
int Reading(POSITION * &Head, POSITION * &Tail){...}   
这样在定义函数里修改地址的值返回的就是变了之后的值!

计机羊咩咩 发表于 2014-10-8 21:36:17

恋色天空 发表于 2014-10-8 00:21
使用结构体包涵头指针和尾指针

你说得对哈其实今天早上我就想过了应该放入结构体内
页: [1]
查看完整版本: 指针做形参 并带回地址的问题