当我将指针(指向一个对象)作为参数传递给被调用函数时,为什么不复制对象的属性?有没有实际的理由说明为什么不发生这种情况?
例如,如果x是指向对象的指针,则调用函数不能看到被调用函数中的赋值x = y。然而,赋值x.f = 3是可见的(f是属性)。
谢谢!
答案 0 :(得分:0)
指针(在c和c ++以及大多数其他语言中)是变量,指向内存中的实际对象所在的地址。
p
传递给函数,其中相应的参数被称为x
,导致指向同一地址/对象的两个指针:一个指向调用函数(p
),一个指向内部被调用者(x
),但您仍然只有一个对象(obj1
)。x.f=3
(或c / c ++语法中的c->f=3
)表示:p
指向,您也可以通过p
观察到此更改。y
指向一个不同的对象(obj2
),并且您将该指针指定给x,则不会将obj2的内容复制到obj1 ,但您只是将obj2的ADDRESS复制到x
并保持obj1不变。现在x
指向一个与p
不同的对象,因此您之后不会通过p
观察到任何更改。