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