|
您好: 感謝您的意見交流,這個問題看似簡單,卻又相當棘手。 msdn 上有提到 interior_ptr 、 pin_ptr 可以作 managed 和 unmanaged 的轉換,但實際上卻無法以指標取址。為了不再您久等,先以筆者測試的範例引導您。或許您可以接力完成。 #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { array<int>^ arr = gcnew array<int>{1,2,3,4,5}; // create an interior pointer into the array interior_ptr<int> p = &arr[0];
Console::WriteLine("陣列元素長度={0}" ,arr->Length*sizeof(arr[0]) ); Console::WriteLine("陣列元素\t位 址\t值"); Console::WriteLine("-------------------------------------"); for (int i=0;i<5;i++) Console::WriteLine("arr[{0}]\t\t{1}\t\t{2}",i ,*(p+i),arr[i]); // 下一行以 (p+i) 顯示位址會出現編譯錯誤 // Console::WriteLine("arr[{0}]\t\t{1}\t\t{2}",i ,(p+i),arr[i]);
delete[] arr; Console::Read(); return 0; } |