[英]Convert pointer from C++ to C#
我想將我的代碼從C ++轉換為C#。 C ++包含指針,我想將其轉換為C#。
這是C ++代碼:
void callkernel(int *obsx,int *obsy,int *obsz,int no,int nx,int *x,
int *y,int *z,int dx,int dy,int dz,double **k)
{
double dxd2 = dx/2;
double dyd2 = dy/2;
double dzd2 = dz/2;
for (int q=0; q < nx;q++)
{
double xb = x[q]-dxd2; double xa = x[q]+dxd2;
double yb = y[q]-dyd2; double ya = y[q]+dyd2;
double zb = z[q]-dzd2; double za = z[q]+dzd2;
for (int m = 0; m<no; m++)
{
double kernel = mk(obsx[m],obsy[m],obsz[m],xb,yb,zb,xa,ya,za);
k[m][q] = kernel;
}
}
}
然后它將通過以下方式調用:
callkernel(obsx,obsy,obsz,no,nx,x,y,z,dx,dy,dz,k);
這是我在C#中的代碼:
void callkernel(int[] obsx, int[] obsy, int[] obsz, int no, int nx, int[] x,
int[] y, int[] z, int dx, int dy, int dz, ref double[][] k)
{
double dxd2 = dx / 2;
double dyd2 = dy / 2;
double dzd2 = dz / 2;
for (int q = 0; q < nx; q++)
{
double xb = x[q] - dxd2; double xa = x[q] + dxd2;
double yb = y[q] - dyd2; double ya = y[q] + dyd2;
double zb = z[q] - dzd2; double za = z[q] + dzd2;
for (int m = 0; m < no; m++)
{
double kernel = mk(obsx[m], obsy[m], obsz[m], xb, yb, zb, xa, ya, za);
k[m][q] = kernel;
}
}
}
調用者:
callkernel(obsx, obsy, obsz, no, nx, x, y, z, dx, dy, dz, ref k);
它們只是我程序中大代碼的一小部分。 用我做的代碼,似乎有不同的結果。 誰能讓我知道我的錯誤在哪里?
我已經知道答案了。 它是由另一種方法引起的。 轉換效果很好。 順便說一句,謝謝您的回答。 它補充了我對指針的理解。 感謝您的寶貴時間。
附言:我想投票給我答案,但我想怎么做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.