指针做形参 并带回地址的问题
蒽问题是酱紫的{:1_1:}比如在 int Reading(POSITION *Head, POSITION *Tail){...} 这个函数体
在函数内部创建了一个链表需要带回头指针和尾指针 然而函数只能返回一次
于是打算以外部指针做参数然后获取链头和链尾的地址
如Reading(Head, Tail);酱紫去调用
最后却忽略了形参会被释放掉 当函数结束之后两个外部指针仍为NULL
求各路大神支招 获取链头和链尾的地址
使用结构体包涵头指针和尾指针 你为什么不在这个函数外面创建链表。。函数返回释放的不是形参 是局部变量 你先搞懂函数再说吧:sweat: 实参是地址,创建链表之后,该地址段里创建了链表内容,地址内存的值修改了,但是形参没有传回地址。
第一种方法:可以用指向指针的指针。
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 00:21
使用结构体包涵头指针和尾指针
你说得对哈其实今天早上我就想过了应该放入结构体内
页:
[1]