错误:类型“float(*)[1]”的参数与“float **”类型的参数不兼容

时间:2011-11-03 17:55:14

标签: c++ pointers

我有一个带有以下签名的函数:

float* Interpolate(float t, UINT iOrder, UINT iDimension, float** ppPointsArray);

尝试按以下方式调用时:

float ppfValues[2][1];
ppfValues[0][0] = 0.0f;
ppfValues[1][0] = 10.0f;

float* pfResult = MyMathFuncs::Interpolate(0.5f,2,1,ppfValues);

我收到以下错误:

Error: argument of type float(*)[1] is incompatible with parameter of type "float**"

如果我想正确地打电话,我应该这样做:

float** ppfValues = new float*[2];
ppfValues[0] = new float(0.0f);
ppfValues[1] = new float(10.0f);

float* pfResult = MyMathFuncs::Interpolate(0.5f,2,1,ppfValues);

现在问题是:我认为float [x] [y]实际上与浮动**相同 他们为什么不呢?技术原因是什么?那么它们究竟是什么呢?

1 个答案:

答案 0 :(得分:7)

  

我认为float [x] [y]实际上和float **

相同

这一切都归结为数组和指针不等同这一事实。下面是C常见问题解答列表(即使这是一个C ++问题),它以各种方式强调这一事实。