我有一个带有以下签名的函数:
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]实际上与浮动**相同 他们为什么不呢?技术原因是什么?那么它们究竟是什么呢?
答案 0 :(得分:7)
我认为float [x] [y]实际上和float **
相同
这一切都归结为数组和指针不等同这一事实。下面是C常见问题解答列表(即使这是一个C ++问题),它以各种方式强调这一事实。