文章大纲:
1.题目简介
2.重点分析
3.知识拓展
1.题目简介
输入一个链表的头结点,从尾到头反过来打印出每个节点的值
2.重点分析
书上说除了函数,pHead仍然是空指针。卡那里把指针当参数直接传进去,是改变不了指针的。还会造成问题。
下面帮助理解和分析
指针的指针图解
那么怎么办?
两种方法:1.指针的指针 2.指针的引用
指针的指针做法
这里注意 要初始化一个指针为空,而不是初始化一个指针的指针为空。
我一开始以为,参数那里是两颗星,那我这里也应该是初始化**(too young)
然后在传入参数的时候是传入指针的地址进去。&
指针的引用做法
这两者的写法区别不大,指针的引用就不用加&取地址符了,同时函数里面就是把pHead前面的*都去掉即可。
这两种方法哪种更有优势呢?
我去网上查阅资料的时候,看到是说指引的引用更好。
然后我做了一个测试,果然,用指针的指针还是会多浪费一个内存出来。
而用引用则一直在修改原来的对象,始终如一。
3.知识拓展
在使用返回值时,千万别返回指向“栈内存”的指针、引用,因为该内存在函数结束时自动消亡了,返回的指针是个野指针了。例如
在函数中不定义数组,定义指针,示例:
此时的程序是正确的,但是有一点,此时分配的内存处于静态区,是只可以读取但是不可以修改的。