指针有时候真的不是很好懂下面下面我将利用调试的方式讲解一下指针到底是个什么东西
这里我使用了链表结构体
指针传递传递![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/518f12a015cd7c77b59e879536bbfdfd.png)
这张图片我们可以看出head指针的地址与head指针所指向的内容的地址也就是值的地址如下图:
继续Debug
显而易见p指针所在的地址与head不同
说明了什么?
说明了当指针作为函数参数传递指针其实就是值传递(也就是把head拷贝一份)如下图:
说到这里就还要再说一下因为函数局部变量P拿到了LNode的地址所以他完全可以操作这个变量 也可以free掉他如下图
这里要注意free函数使free掉指针指向内容而不是指针
不难发现LNode已经被free掉了
指针的引用:
指针的引用其实就是当前指针变量的别名,其实操作的还是这个指针变量 话不多说上图
可以看见他俩其实就是一个东西反应到内存图上就应该是(我自己YY的)
总结: 指针变量之间的赋值其实就是拷贝,但是要注意拷贝是指拷贝的指针,而指针的内容是完全相同的可以看第四个图