我们来先看下指针和指针变量都是什么?
1. 指针指的是地址.
2. 指针变量, 首先 它是一个变量, 是变量就有地址, 所以指针变量有自己的地址. 其次 指针变量存储的值, 是一个地址, 这个地址可以是另外一个变量的地址, 也可以是分配出来的堆的地址.
从程序的输出可以看出, a, b, c 都是指针变量, 它们都有自己的地址, 并且每个指针变量的地址并不相同. 当 a,b,c 都赋值为 nullptr 的时候, 这些指针变量里面存储的地址都是 0;
当 a,b,c 的值指向不同的地址的时候, 我们会发现, 指针变量 a,b,c 的地址并没有变化, 而这些指针变量值中存储的地址发生了变化. 当我们对这些指针变量做 * 操作的时候, 获取到的数值, 是存的的那个地址里面 存储的变量值.
从上面的输出结果可以看出, 不同的指针变量可以指向相同的地址, 一旦这个存储地址里面存储的值被改变, 那么指向该地址的指针变量的 * 操作都会得到同样的变化后的值.
从上面的程序输出结果来看, delete 操作只是将存储数值的那块地址内的数值移除, 并没有将指针变量的指向别处.
如果你希望对应的指针变量指向别处, 你需要自己添加这部分操作, 例如 a=nullptr; 如此以来指针变量 a 所指向的地址就变成了 0, 但是指针变量 b,c 指向的地址并没有改变.
灰子作于二零一八年十二月二十九日.
[原创作品, 欢迎分享, 请勿转载, 谢谢尊重!]
来源: http://www.jianshu.com/p/dbb569ef9f4f