将C MEX文件转换为纯c ++时出错

时间:2011-09-23 15:53:41

标签: c pointers mex

我正在将一些C mex文件转换为纯C ++。显然我需要转换mxarrays和mex函数。

code所示,它会在第60行创建一个mxarray,

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 个答案:

答案 0 :(得分:1)

这是C pointer arithmetic

您粘贴的代码将gradient视为指向double数组中第一个double的指针。截至gradient + ( out[0] * out[1] ),它表示“在double开始的out[0] * out[1]数组中向我指向double索引gradient的指针。它相当于&gradient[ out[0] * out[1] ]