指针可以方便交换值的情况,通过传递地址,改变地址里面的内容,进而可以达到交换两个值。
进而形成错觉,只要涉及到指针操作,会影响关联的指针,尤其二级指针情况。
在二级指针中这样的场景不易理解,例如:
int **m, **n;
*m = *n;
*n = NULL;
错误的认为 *m=NULL,原因在于形成*m,*n 为同一指针。
以下图为例:n中的内容为0x02,*n为其所指向对象的内容即0x00。
*m = *n; 将0x00 赋值给*m;
*n = NULL; 是将0x02中的内容改变。不改变*m的值。