C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
只是好奇 C# 中这些东西的区别:int* 和 IntPtr ?
还有:
int varTest = 123;
IntPtr PT = (IntPtr)(&varTest);
int* PointerTo = &varTest;
long LongAdd = (long)PointerTo;
int IntAdd = (int)PointerTo;
MessageBox.Show(LongAdd.ToString()); //Same
MessageBox.Show(IntAdd.ToString()); //Same
MessageBox.Show(PT.ToString()); //Same
Note:此问题总结整理于: What is the differences between int* and IntPtr ?
int* i 表示 i 的类型是“指向 int 的指针”,您可以将其读作 i 是指向整数的指针。
也就是说,第一部分代表变量类型(指向int的指针),第二部分代表名称(i)。
IntPtr 类型被设计为一个整数,其大小是特定于平台的。 也就是说,此类实例在 32 位硬件和操作系统上预计为 32 位,在 64 位硬件和操作系统上预计为 64 位。
它被称为 IntPtr,因为要从非托管本机代码 C/C++ 使用它,您必须使用模拟类型:intptr_t。 C# 的 IntPtr 完全映射到 C/C++ 的 intptr_t。 它可以被实现为intptr_t。 在C/C++中,确保intptr_t类型的大小与void*类型的大小相同。
并且您需要将代码放入 unsafe{...} 中。
更多详细信息您可以参考以下链接。
Just what is an IntPtr exactly?
如果回复有帮助,请点击“接受答案”并点赞。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。