开发者

Getting error while converting C MEX-file into pure c++

开发者 https://www.devze.com 2023-04-08 12:30 出处:网络
i am converting some C mex-files into pure C++. obviously i need to convert mxarrays and mexfunctions.

i am converting some C mex-files into pure C++. obviously i need to convert mxarrays and mex functions.

as you see in the code, it creates an mxarray at line 60,

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

and at the line 61 assigns it to a pointer with mxgetpr,

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

at the line 68 it sums the pointer with multiplication of integers,

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

i couldn't manage to understand the line 68. what does it means?

开发者_如何学Goi don't know so much about mxarrays and mex files. could anyone please help me?


This is C pointer arithmetic.

The code that you pasted is treating gradient as a pointer to the first double in an array of doubles. By gradient + ( out[0] * out[1] ), it means "give me the pointer to the double at index out[0] * out[1] in the array of doubles beginning at gradient". It is equivalent to &gradient[ out[0] * out[1] ].

0

精彩评论

暂无评论...
验证码 换一张
取 消