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对象?谢谢.
这就是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.
确保这一点非常明确.当你感到困惑时,回到第一原则.指针是值,它们可能被解除引用,这样做会产生变量.一切都源于此.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |