取消引用指针 -vs- &-运算符

dereference a pointer -vs- &-operator

本文关键字:运算符 -vs- 引用 指针 取消      更新时间:2023-10-16
这两个

赋值会等价吗,即执行完全相同的东西吗?

*pointer = object
pointer = &object

,其中指针是指向"对象实例"的指针。

或者这只对基元类型有意义。

不,这些是不一样的。

pointer = &object设置pointer,使其指向 object

*pointer = objectpointer指向的事物的值设置为等于object的值。

绝对不是。

*pointer = object

更改指针指向的内存。

pointer = &object

更改指针。

pointer   ---->    object1
&object   ---->    object

在第一种情况下,这变为:

pointer   ---->    object
&object   ---->    object   

在第二种情况下:

                  ---->    object1 //could turn into a memory leak
&object, pointer  ---->    object

不,这些不是等价的。 第一个使指针的目标值等于右侧的对象。 第二个更改指针本身,使其指向右侧的对象。

换句话说,在第一个对象之后,内存中有两个对象的值等于object的值。 在第二个之后,只有一个对象具有该值,此外还有一个指向该对象的指针。

NO.

第一个表达式将 Object 的值分配给指针。

假设指针变量指向0x1234,在第一次赋值后,地址0x1234将包含值"object"。

而第二个赋值将使指针指向对象的地址。

如果在第一个赋值指针之后更改值对象,则不会注意到任何内容。

其中,作为第二个赋值,如果您更改对象的值,则可以通过以下方式获取更新的值

*pointer.