将 array^ 转换为 int*
如何将 array
转换为 int*
?
how can I convert array<int^>^
to int*
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何将 array
转换为 int*
?
how can I convert array<int^>^
to int*
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
你不能,至少不能用简单的方法。
如果您的意思是
array^
到 int*,您可以执行以下操作:然后在
pin_ptr
上使用经典指针算术。You cannot, at least not the simple way.
If you mean
array<int>^
to int*, you can do following:and then use classical pointer arithmetic over the
pin_ptr
.我认为直接将
array^
转换为int*
会很困难,因为它是一个引用 int 的数组,而不是一个 int 数组。对于整数本身的内存布局没有任何承诺,这是将它们获取到普通旧式 C/C++ 数组所必需的。我认为最简单的方法是复制数组,将其传递给 f(int* input) ,然后如果数据被 f 修改,则可能将数据复制回来。
I think it will be hard to directly convert
array<int^>^
into anint*
, because it is an array of references to ints, not an array of ints. There is no promises about the memory layout of the integers themselves, which is required in order to get them to a plain old C/C++ array.I think that the easiest way to go is to make a copy of the array, pass it to
f(int* input)
and then possibly copy the data back if it is modified by f.数组的名称是数组中第一个元素的地址。
Name of the array is the address of first element in the array.