Object* pObject;
Object object;
pObject = &object;
object
和 pObject
是否分配了相同数量的内存?
Object* pObject1, pObject2, pObject3;
Object object;
pObject1 = &object;
pObject2 = &object;
pObject3 = &object;
和
pObject1 = &object;
pObject2 = pObject1;
pObject3 = pObject1;
两者有什么区别?
在第二个示例中取消引用 pObject2
和 pObject3
是否安全?
最佳答案
在第一个代码片段中,内存中只有一个对象。
object
是“Object”类型。 pobject
是“Object
的地址”类型。
翻译:
Object* pObject; // Objectp is a POINTER that may be used for objects of type Object
Object object; // Allocate on the stack an "Object". Call it "object"
pObject = &object; // pObject points (that is, stores the ADDRESS of) object
在你的第二个代码中,将有三个类型为“address of something of type Object
”的变量,它们都包含Object
的地址>。指针就像“代表内存地址的数字”。但是,正如 Gorpik 所提到的,您应该将它们声明为
Object *pObject1, *pObject2, *pObject3;
这是让星号靠近名称很有趣的原因之一——在本例中为 pObject
——而不是类型——在本例中为 Object
.像“类型 Object
:指针 pObject1
指向什么,指针 pObject2
指向什么,等等”来读它。
第三个代码片段具有相同的效果。所有三个变量都获得了 object
的地址。
关于c++ - 关于指针的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17389114/