Конвертировать указатель из C ++ в C #

0

Я хочу преобразовать свой код из 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);

вот мой код в С#:

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);

Это небольшая часть большого кода в моей программе. С кодом, который я сделал, кажется, имеет другой результат. Может ли кто-нибудь сообщить мне, где моя ошибка?

  • 2
    Вы действительно должны использовать более описательные имена для ваших переменных, это очень трудно читать
  • 0
    У вас там есть метод (?) С именем mk . Нам также нужно увидеть код для этого
Показать ещё 5 комментариев
Теги:
arrays
pointers

1 ответ

0
Лучший ответ

Я уже получил ответ. Это связано с другим методом. Преобразование работает хорошо. Кстати, спасибо за ваш ответ. Это дополняет мое понимание указателей. Я ценю ваше время.

Ps: Я хочу проголосовать за ответ, но idk, как это сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню