指向C++的指针

Rad*_*hai -3 c# c++ pointers dynamic

我无法真正理解指针指向C++的指针.假设我有一个如下定义的类:

class Vector3 
{
   public:
         float x,y,z;
         //some constructors and methods
}
Run Code Online (Sandbox Code Playgroud)

如果我有类似的东西,那该怎么办?

Vector3 **myVector3;
Run Code Online (Sandbox Code Playgroud)

这就是C#的等同于说List<List<Vector3> myVector3什么?无论如何,我怎样才能动态分配这个myVector3对象?谢谢.

Eri*_*ert 5

这就是C#的等同于说List<List<Vector3> myVector3什么?

没有.

无论如何,我怎样才能动态分配这个myVector3对象?

我不明白这个问题.

我无法真正理解指针指向C++的指针.

回到第一个校长.什么是变量?变量是存储用于一个的特定的类型.

变量有哪些操作?可以从中读取,写入或者可以获取它们的地址.

地址获取运算符的结果是什么&?指向变量的指针.

什么是指针?甲表示一个变量.

指针值有哪些可用的操作?指针可以解除引用使用*.这样做会产生一个变量.(指针上还有其他操作,但我们不用担心这些.)

所以我们总结一下.

Foo foo;是一个类型的变量Foo.它可以包含一个Foo.

&foo是一个指针.这是一个价值.取消引用时,它会生成变量foo:

Foo foo;
Foo *pfoo = &foo;
*pfoo = whatever; // same as foo = whatever
Run Code Online (Sandbox Code Playgroud)

pfoo是一个变量.变量可以采用其地址:

Foo **ppfoo = &pfoo;
*ppfoo = null;  // Same as pfoo = null.  Not the same as foo = null.
Run Code Online (Sandbox Code Playgroud)

你去吧 ppfoo是一个变量.它包含一个值.它的值是一个指针.当该指针被解除引用时,它会产生一个变量.该变量包含一个值.该值是指针.当它被解除引用时,它会产生一个变量.该变量属于类型Foo.

确保这一点非常明确.当你感到困惑时,回到第一原则.指针是值,它们可能被解除引用,这样做会产生变量.一切都源于此.