C语言中,为什么在调用函数中修改数组后不用返回数组,但是链表就要返回head?

在调用函数中,如果修改了形参里的数组,不需要返回数组,在主函数中的数组都会改变,那为什么链表就要返回head?... 在调用函数中,如果修改了形参里的数组,不需要返回数组,在主函数中的数组都会改变,那为什么链表就要返回head? 展开
 我来答
BD_ABEL
2014-12-13 · TA获得超过383个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:328万
展开全部
这完全要看你怎么去写初始化链表的函数了,如果你在主函数里定义一个指向头结点的指针,那么就不需要返回,但是你传参的时候,要传的是该指针的地址,如果你在初始化的函数里面定义头节点指针那么就必须要返回了,因为你用的是malloc函数分配内,指针指向这块内存,当然要返回,不然你就不知道分配好的内存在哪里了啊
追问
你的意思是,当你在主函数里定义了头结点的指针,在调用函数里插入或者修改了结点,就不需要返回头结点指针?可是我试过这样不行啊
追答
当然不需要返回呀,只要你的函数不是改变头指针就可以了,我就是这么写的啊,而且只有在初始化的时候才需要传递头指针的地址,其他的操作因为不需要改变头指针,都不要传指针地址的,而只要传递头指针就可以啦,因为你插入或修改都是改变头指针后面的节点
背心_心背
2014-12-13 · TA获得超过449个赞
知道小有建树答主
回答量:644
采纳率:100%
帮助的人:501万
展开全部
你理解错了 函数返回一个值是因为其他地方要用到所以才要返回,如果用不要就不要返回
比如定义一个脸变linklist *head;
然后你在函数中初始化链表 那么你应该把初始化的结果给head 所以要返回
希望楼主采纳 不懂可以追问
追问
当我要调用函数在链表那里插几个结点下去,没有改变其他东西,可我还是要返回head,不然在主函数里输出链表时根本没有改变过。我就不明白我的头结点没有改变,只是改变了链表里的某几个结点,为什么还要返回一个head?为什么不返回的话主函数里的链表就不能沿着在调用函数里改过结点走下去?
当我要调用函数在链表那里插几个结点下去,没有改变其他东西,可我还是要返回head,不然在主函数里输出链表时根本没有改变过。我就不明白我的头结点没有改变,只是改变了链表里的某几个结点,为什么还要返回一个head?为什么不返回的话主函数里的链表就不能沿着在调用函数里改过结点走下去?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ylcqucc
2014-12-13 · TA获得超过1435个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:322万
展开全部
因为链表与数组是不一样的

要访问一个单链表,必须找到头结点,然后逐个访问该链表中的节点

而数组,是通过数组名加下标去访问,数组名就代表数组在内存中的地址,即数组中第一个元素的地址

希望能帮到您
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式