2010-08-25 8 views
2

comment puis-je convertir array<int^>^ en int*?Convertir le tableau <int^>^en int *

+0

C++ ou C# ou est-ce quelque chose comme C# ++? – Potatoswatter

+0

C++/CLI, les extensions .NET de Microsoft pour C++. –

+0

Êtes-vous sûr d'avoir besoin du tableau ^'? Par exemple, C# 's string [] 'devient C++/CLI' array ^', mais C#' int []' est C++/CLI 'array ^' sans le second '^'. –

Répondre

0

Je pense qu'il sera difficile de convertir directement array<int^>^ en un int*, car il est un tableau de références à ints, pas un tableau de ints. Il n'y a pas de promesses sur la mise en page de la mémoire des entiers eux-mêmes, ce qui est nécessaire pour les amener à un vieux tableau simple C/C++.

Je pense que la façon la plus simple d'aller est de faire une copie de la matrice, la passer à f(int* input) et éventuellement recopier les données si elle est modifiée par f.

-1

Le nom du tableau est l'adresse du premier élément du tableau.

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

Oui, nous savons. Mais cela ne répond pas à la question. –

+0

supposer que j'ai: tableau ^p; et je veux passer p comme argument à f (int * input); que dois-je faire? –

5

Vous ne pouvez pas, du moins pas de manière simple.

Si vous voulez dire array<int>^ int *, vous pouvez faire ce qui suit:

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

puis utilisez l'arithmétique de pointeur classique sur la pin_ptr.

Questions connexes