上面的例子中,在指针的方法调用里,只能通过 t.val 的方式来赋值,这样外面才会跟着改变
如果是 将一个 &Test 的地址直接付给 t ,外面的值不会改变。
看下图,解决方法
原因是 t = &Test 是把 t指针 变成指向 &Test 地址的指针,而 &Test 地址在函数调用完就销毁了,t 指回原来的地址,所以外面的值不会变。
而图2是将指针指向地址的值取出来,再将值赋值,这样指针地址不变,外面的值也跟着改变。
也就是在指针调用方法里面,要想改变外面指针的值,有2种方法,(一): *t = value (二): t.val = value 这两种方式。
用 t = &value 这种方式,在指针的方法调用中途会改变,但调用结束后还是会变回原来的值,即外面的值不变.
结合https://www.jianshu.com/p/a9a9c05b38d5 里面的(坑4),更好理解,暂时这么理解吧,待续
网友评论