Tôi đang viết nó bằng C# thuần túy, nhưng nếu bạn lấy đi unsafe static
từ Func
, thì Func
sẽ hoạt động trong C/C++. Hãy nhận biết rằng tôi lưu ý chắc chắn rằng nó là ok ok để viết :-) này Tôi đang sử dụng này Indexing into arrays of arbitrary rank in C#
static unsafe void Main(string[] args) {
var myArray = new short[5, 10, 20];
short z = 0;
for (int i = 0; i < myArray.GetLength(0); i++) {
for (int j = 0; j < myArray.GetLength(1); j++) {
for (int k = 0; k < myArray.GetLength(2); k++) {
myArray[i, j, k] = z;
z++;
}
}
}
// myArray[1, 2, 3] == 243
fixed (short* ptr = myArray) {
Func(ptr, myArray.GetLength(0), myArray.GetLength(1), myArray.GetLength(2));
}
}
// To convert to C/C++ take away the static unsafe
static unsafe void Func(short* myArray, int size1, int size2, int size3) {
int x = 1, y = 2, z = 3;
int el = myArray[x * size2 * size3 + y * size3 + z]; // el == 243
}
Bạn không thể viết mã như thế trong C++. –
phần đầu tiên của mã là trong C# thứ hai là trong c + + và tôi đã thử nó bây giờ trình biên dịch cho phép tôi mã C++ –
Có lẽ bạn có thể thay đổi mã của bạn thành một mảng ba. – Simon