我们知道,函数传递参数是“拷贝”,不是把原值传进去,除非参数是数组这样的“地址”。
当把指针作为函数参数传递进去,想当然的以为在函数里面修改了指针,在函数外面也保留指针的改变。
实际上,调用函数结束之后,指针的指向不会改变。
所以可以把新的指针指向作为返回值,通过赋值改变原来的指针指向。达到修改指针的目的。
2021-6-12补充
在用C写stack和list时候都遇到的问题。
已经知道“当指针作为函数参数传递进去时候,在函数里面修改了指针,函数外面指针指向不会改变,需要利用返回值来改变原指针指向”。但是上一次没有写清楚自己真正遇到的问题。
当我想要改变链式结构时候,采用了move函数计算算法允许的下一步位置,然后拟用int类型存放了步数,但是实际上我们需要保证函数运行的时候指针始终指向需要的位置(Head or tail),所以,嵌套函数时候,我们始终需要保证返回值都是指针,才能在main里面指针的位置正常。所以move里面调用了改变指向的函数,move返回值也就需要是指针。
也就是说,涉及这种链表的指针问题的时候,嵌套函数都应该满足返回值是指针。并且每一次调用都是“指针=函数(指针)”的形式,每一层都应该这样。