将 array^ 转换为 int*

发布于 2024-09-15 18:22:00 字数 66 浏览 8 评论 0原文

如何将 array^ 转换为 int*

how can I convert array<int^>^ to int*?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笔芯 2024-09-22 18:22:00

你不能,至少不能用简单的方法。

如果您的意思是 array^ 到 int*,您可以执行以下操作:

array<int>^ arr;
cli::pin_ptr<int> pArrayElement = &arr[0];

然后在 pin_ptr 上使用经典指针算术。

You cannot, at least not the simple way.

If you mean array<int>^ to int*, you can do following:

array<int>^ arr;
cli::pin_ptr<int> pArrayElement = &arr[0];

and then use classical pointer arithmetic over the pin_ptr.

落花浅忆 2024-09-22 18:22:00

我认为直接将 array^ 转换为 int* 会很困难,因为它是一个引用 int 的数组,而不是一个 int 数组。对于整数本身的内存布局没有任何承诺,这是将它们获取到普通旧式 C/C++ 数组所必需的。

我认为最简单的方法是复制数组,将其传递给 f(int* input) ,然后如果数据被 f 修改,则可能将数据复制回来。

I think it will be hard to directly convert array<int^>^ into an int*, 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.

£噩梦荏苒 2024-09-22 18:22:00

数组的名称是数组中第一个元素的地址。

int array[] = {1, 2, 3, 4, 5};
int* p = array;

Name of the array is the address of first element in the array.

int array[] = {1, 2, 3, 4, 5};
int* p = array;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文