鱼C论坛

 找回密码
 立即注册
查看: 1988|回复: 4

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

 关闭 [复制链接]
发表于 2014-10-8 00:21:47 | 显示全部楼层 |阅读模式
5鱼币
蒽  问题是酱紫的{:1_1:}

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

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

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


最佳答案

查看完整内容

使用结构体包涵头指针和尾指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-8 00:21:48 | 显示全部楼层
使用结构体包涵头指针和尾指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-8 11:26:27 | 显示全部楼层
你为什么不在这个函数外面创建链表。。函数返回释放的不是形参 是局部变量 你先搞懂函数再说吧:sweat:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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){...}   
这样在定义函数里修改地址的值返回的就是变了之后的值!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-8 21:36:17 | 显示全部楼层
恋色天空 发表于 2014-10-8 00:21
使用结构体包涵头指针和尾指针

你说得对哈  其实今天早上我就想过了  应该放入结构体内  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 04:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表