这两个任务是等价的,即执行完全相同的事情吗?
*pointer = object
pointer = &object
,其中指针是指向“对象实例”的指针。
或者这仅对原始类型有意义。
这两个任务是等价的,即执行完全相同的事情吗?
*pointer = object
pointer = &object
,其中指针是指向“对象实例”的指针。
或者这仅对原始类型有意义。
No, these are not the same.
pointer = &object
sets pointer
so that it points at object
.
*pointer = object
sets the value of thing being pointed to by pointer
to be equal to the value of object
.
Absolutely not.
*pointer = object
changes the memory the pointer points to.
pointer = &object
changes the pointer.
pointer ----> object1
&object ----> object
In the first case, this becomes:
pointer ----> object
&object ----> object
In the second case:
----> object1 //could turn into a memory leak
&object, pointer ----> object
不,这些不是等价的。第一个使指针的目标值等于右侧的对象。第二个更改指针本身,使其指向右侧的对象。
换句话说,在第一个之后,内存中有两个值等于object
' 值的对象。在第二个之后,只有一个具有该值的对象,另外还有一个指向该对象的指针。
不。
您的第一个表达式将对象的值分配给指针。
假设您的指针变量指向 0x1234。第一次分配后,地址 0x1234 将包含值“对象”。
而第二次赋值将使指针指向对象的地址。
如果您在第一个赋值指针之后更改值对象,则不会注意到任何内容。
其中作为第二个赋值,如果你改变对象的值,你可以通过
*pointer.