c++ - 关于指针的说明

标签 c++ pointers

Object* pObject;
Object object;
pObject = &object;

objectpObject 是否分配了相同数量的内存?

Object* pObject1, pObject2, pObject3;
Object object;
pObject1 = &object;
pObject2 = &object;
pObject3 = &object;

pObject1 = &object;
pObject2 = pObject1;
pObject3 = pObject1;

两者有什么区别? 在第二个示例中取消引用 pObject2pObject3 是否安全?

最佳答案

在第一个代码片段中,内存中只有一个对象。 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/

相关文章:

c++ - 字符串流问题,我认为我的代码看起来不错,但它显示奇怪的符号

C++继承不采用枚举

c++ - 静态常量字符串不会被初始化

c - 在循环链表的末尾插入在 C 中不起作用

c - 为指针的索引赋值

c++ - 我们可以在不使用 c 程序和一些编码技术的情况下访问 c 中变量的内存位置及其在程序中的值吗?

c++ - 为什么存储指向内部存储器的普通指针的结构不能存储在 stxxl 容器中?

c - 为什么采用 sizeof(array) 会在函数中发出警告,但在 main() 中却不会?

c++ - 我必须为我的 C++ 类字段使用指针吗?

c++ - 在 Windows 10 中双击对话框窗口的顶部或底部边缘后如何阻止调整大小?