Object* pObject;
Object object;
pObject = &object;
Run Code Online (Sandbox Code Playgroud)
是否object
与pObject
被分配的内存一样多吗?
Object* pObject1, pObject2, pObject3;
Object object;
pObject1 = &object;
pObject2 = &object;
pObject3 = &object;
Run Code Online (Sandbox Code Playgroud)
和
pObject1 = &object;
pObject2 = pObject1;
pObject3 = pObject1;
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?它是安全的取消引用pObject2
,并pObject3
在第二个例子?
在第一个代码段中,内存中只有一个对象.
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
Run Code Online (Sandbox Code Playgroud)
在你的第二个代码中,会有三个变量类型为"某种类型Object
的地址",所有变量都包含地址Object
.指针就像"代表内存地址的数字".但是,正如Gorpik所说,你应该声明它们
Object *pObject1, *pObject2, *pObject3;
Run Code Online (Sandbox Code Playgroud)
这就是为什么在这种情况下保持星号接近名称 - 在这种情况下pObject
- 而不是类型 - 的原因之一Object
.读它像"类型Object
:指针pObject1
指向什么,指针pObject2
指向什么"等.
第三个代码段具有相同的效果.这三个变种都得到了地址object
.