我有一段C代码,它以一种非常混乱的方式使用指针。
// We first point to a specific location within an array..
double* h = &H[9*i];
int line1 = 2*n*i;
int line2 = line1+6;
// ..and then access elements using that pointer, somehow..
V[line1+0]=h[0]*h[1];
V[line1+1]=h[0]*h[4] + h[3]*h[1];
这里发生了什么事?我如何用C#写一些等价的东西?
最佳答案
你没有在C中真正写一些等价的东西,因为你没有指针(除了通过调用unsafe
代码),要从C数组中获取一个元素,你需要一个数组引用和一个索引,然后索引到数组中。
当然,对于C数组也可以这样做。我们将C指针算法转换成C数组索引:
int h_index = 9 * i;
int line1 = 2 * n * i;
int line2 = line1 + 6;
V[line1 + 0] = H[h_index] * H[h_index + 1];
V[line1 + 1] = H[h_index] * H[h_index + 4] + H[h_index + 3] * H[h_index + 1];
然后我们得到了一些可以在C#中一字不差地使用的东西。
关于c# - 您能理解这个C指针代码吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4323779/