当你" de-pointer"一个指针来访问它就好像它是一个对象,在对象的名称之前使用*运算符,它到底在做什么?
我问这个是因为我有指向存储大量数据的对象的指针,我不希望C ++复制它或做任何昂贵的事情。在我能够复制这个对象和使用其中的功能之间有一条很好的界限。
答案 0 :(得分:2)
你得到一个左值,指的是位于指针给出的地址的对象。
通常,单独取消引用指针永远不会导致复制。当获取的引用用于构造相同类型的新对象(在通过值传递给函数时隐式发生),或者用作赋值运算符的参数时,会发生复制。
答案 1 :(得分:0)
当您取消引用指针时,您只是访问其元素;你没有复制任何东西。这两个调用做同样的事情:
(*p).element = 1;
p->element = 1;
如果你想要彻底的解释;你可以看看this question
答案 2 :(得分:0)
取消引用运算符或间接运算符,用“*”表示(即 星号(asterisk),是一种用C语言发现的一元运算符 包括指针变量。它操作一个指针变量,和 返回一个等于指针地址值的l值。 这称为“解除引用”指针。
(http://en.wikipedia.org/wiki/Dereference_operator)
当您使用指针指向对象时,指针只指向对象的地址,但它不会复制任何内容.....
答案 3 :(得分:0)
'*' returns the object as an l-value this pointer is pointing
。它就这么简单。