冰轮腾转下西楼 2020-06-05 15:34 采纳率: 50%
浏览 242

C语言函数中对链表进行递归操作为什么只能使用二级指针?

做了一道题,题目如下:

设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。

答案给的是C++代码,使用了引用&:
图片说明

因为我用的是C语言,所以想改写成指针的版本,但是无论如何都不能得出正确结果。后来我瞎猫碰死耗子,用了二级指针,结果正确。
图片说明

我开始的想法是:参照之前学习指针的示例,在函数中交换a b的值需要传地址进去,那么对结构体进行修改,也要传结构体的地址进去,形参也就变成二级指针了。

结果第二次我没用递归,用while循环遍历删除,这次直接传入结构体没用二级指针也能做对。

看了很多关于二级指针的博文还是百思不得其解,为什么在递归中必须使用二级指针呢?

  • 写回答

1条回答

  • threenewbee 2020-06-05 15:46
    关注

    因为变量作为参数传入函数,修改变量,不会影响实际参数
    因此
    指针只能修改指向的对象,不能修改指针本身
    要让指针指向改变,必须使用双指针。C++还可以使用引用。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)