Преобразовать массив <int ^> ^ в int * - PullRequest
2 голосов
/ 25 августа 2010

как я могу конвертировать array<int^>^ в int*?

Ответы [ 3 ]

5 голосов
/ 25 августа 2010

Вы не можете, по крайней мере, не простым способом.

Если вы имеете в виду array<int>^ для int *, вы можете сделать следующее:

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

, а затем использовать классическую арифметику указателей надpin_ptr.

0 голосов
/ 25 августа 2010

Я думаю, что будет трудно напрямую преобразовать array<int^>^ в int*, потому что это массив ссылок на целые, а не массив целых.Нет никаких обещаний относительно структуры памяти самих целых чисел, которая требуется для того, чтобы получить их в простой старый массив C / C ++.

Я думаю, что самый простой способ - это сделать копиюмассив, передайте его f(int* input) и затем, возможно, скопируйте данные обратно, если они были изменены с помощью f.

0 голосов
/ 25 августа 2010

Имя массива - это адрес первого элемента в массиве.

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