Получение ошибки при конвертации C MEX-файла в чистый c ++ - PullRequest
0 голосов
/ 23 сентября 2011

Я конвертирую некоторые C-mex-файлы в чистый C ++.Очевидно, мне нужно преобразовать функции Mxarrays и MEX.

как вы видите в коде , он создает mxarray в строке 60,

mxArray *mxGradient = mxCreateNumericArray(3, out, mxDOUBLE_CLASS, mxREAL);

, а в строке 61 назначает его указателю с помощью mxgetpr,

double *gradient = (double *)mxGetPr(mxGradient);

в строке 68 суммирует указатель с умножением целых чисел,

double *tempGradientVBase   = gradient + ( out[0] * out[1]);

Мне не удалось понять строку 68. Что это значит?

Я не так много знаю о mxarrays и mex файлах.Может ли кто-нибудь помочь мне?

1 Ответ

1 голос
/ 24 сентября 2011

Это C арифметика указателя .

Код, который вы вставили, обрабатывает gradient как указатель на первый double в массиве double с. gradient + ( out[0] * out[1] ) означает "дать мне указатель на double по индексу out[0] * out[1] в массиве double с, начинающемся с gradient" Это эквивалентно &gradient[ out[0] * out[1] ].

...