C/C++:提升_指针的指针和指针的引用
写在前面
今天在使用指针的时候我发现了一个自己的错误。
我刚开自以为是觉得输出的两个P都是6,当时觉得两个p所指的地址相同,要修改就都修改了。
这是一个很低级的错误,两个p所指的地址相同,但是这两个指针的地址是不一样的。
好比两个人都知道火车站怎么走,但不能说这两个人是一个人,更何况在修改中一个人已经忘了火车站,它只知道高铁站怎么走,那另一个只知道火车站的并没有受到影响,他还是只知道火车站。
好了,那么如何做到main修改里面的p呢?要用到两种技术:
- 指针的指针
- 指针的引用
指针的指针
简单说明:
指针的指针技术中,我们要修改一个指针所指的内容,就要将这个指针本身的地址作为参数传递给方法。
比如我们要到火车站,只有一个人知道火车站的位置,我们要想找到火车站,就要根据一个地址先找到这个人,再根据这个人找到火车站。
表示下来就是**p=&(&(p)),&p所指的就是火车站。&(&(p))就是知道火车站的人的地址。
我们要修改p,就要先找到它,找到后修改火车站的地址,那个人就知道新的火车站地址了。
指针的引用
简单说明:
指针的引用,在这里两个指针本质上是一模一样的,change里面的P就是main里面的P。所以直接修改就好。
个人理解,引用就是指针的一种变体,就是&也可以理解为*.