取消引用指针-vs-& -operator

时间:2012-04-05 11:30:07

标签: c++ c pointers dereference

这两项任务是否相同,即完全相同的东西?

*pointer = object

pointer = &object

,其中pointer是指向“object-instance”的指针。

或者这只对原始类型有意义。

4 个答案:

答案 0 :(得分:12)

不,这些不一样。

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

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

答案 1 :(得分:5)

绝对不是。

*pointer = object

更改指针指向的内存。

pointer = &object

更改指针。

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

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

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

在第二种情况下:

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

NO。

你的第一个表达式将object的值赋给指针。

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

而第二次赋值会使指针指向对象的地址。

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

作为第二个赋值,如果更改object的值,则可以通过

获取更新的值
*pointer.