comment puis-je convertir array<int^>^
en int*
?Convertir le tableau <int^>^en int *
Répondre
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.
Le nom du tableau est l'adresse du premier élément du tableau.
int array[] = {1, 2, 3, 4, 5};
int* p = array;
Oui, nous savons. Mais cela ne répond pas à la question. –
supposer que j'ai: tableau
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
.
C++ ou C# ou est-ce quelque chose comme C# ++? – Potatoswatter
C++/CLI, les extensions .NET de Microsoft pour C++. –
Ê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 '^'. –