请问C#怎么定义一个指向空数组的指针?

bios8086 2011-07-03 08:39:10
public static extern void cvDistTransform(IntPtr src, IntPtr dst, DIST_TYPE distanceType, int maskSize, float[] userMask, IntPtr labels);
float[] userMask 在C++中可以输入NULL,在C#中调用改用啥?
...全文
488 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bios8086 2011-07-03
  • 打赏
  • 举报
回复
caozhy 大师
是你提醒了我!我好像还没想到你这么深的层次!指向空数组的指针和指向数组的空指针,呵呵

我其实知道自己想要的是一个指向空数组的指针
float[] userMask = NULL;
float[] a = new float[0];
这两种方式我都试了,事实上都可以使得函数正常的运行!
bios8086 2011-07-03
  • 打赏
  • 举报
回复
caozhy 大师我一向是尊敬你的!
threenewbee 2011-07-03
  • 打赏
  • 举报
回复
float[] userMask = NULL;

首先这个代码不伦不类,根本在 C++ 里面编译不了。

其次,指向空数组的指针和指向数组的空指针是两个不同的概念,看上去lz的最初想表达的是后者。但是后来又是想表达前者。

最后,C#没有指针概念,无法和C++类比。也许lz是高手,会告诉我,C#也是支持指针的云云。但是互操作兼容是C#使用指针唯一的目的,而lz所谓的解决事实上没有解决。

如果你要传空指针,直接传0就可以了。
bios8086 2011-07-03
  • 打赏
  • 举报
回复
float[] a = new float[0];
我搞了个这样的数组传进去,居然可以!呵呵
bios8086 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whycom 的回复:]

把那个参数定义为intptr
如果非null
float[] a=
intptr pf = Marshal.UnsafeAddrOfPinnedArrayElement(a,0);
传入
[/Quote]
我不能定义啊,是调用人家的!
whycom 2011-07-03
  • 打赏
  • 举报
回复
把那个参数定义为intptr
如果非null
float[] a=
intptr pf = Marshal.UnsafeAddrOfPinnedArrayElement(a,0);
传入
bios8086 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 whycom 的回复:]

IntPtr.Zero
[/Quote]
不行 我开始也是这样想的,可是不行!
whycom 2011-07-03
  • 打赏
  • 举报
回复
IntPtr.Zero

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧