我有一个具有以下签名的函数:
float* Interpolate(float t, UINT iOrder, UINT iDimension, float** ppPointsArray);
Run Code Online (Sandbox Code Playgroud)
尝试按如下方式调用时:
float ppfValues[2][1];
ppfValues[0][0] = 0.0f;
ppfValues[1][0] = 10.0f;
float* pfResult = MyMathFuncs::Interpolate(0.5f,2,1,ppfValues);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: argument of type float(*)[1] is incompatible with parameter of type "float**"
Run Code Online (Sandbox Code Playgroud)
如果我想正确地调用它,我应该这样做:
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);
Run Code Online (Sandbox Code Playgroud)
现在的问题是:我认为float [x] [y]实际上与浮点数相同**为什么不是?技术原因是什么?那么它们究竟是什么呢?
我以为float [x] [y]实际上与浮动**相同
这一切都归结为数组和指针不相等的事实.下面是C FAQ的列表(即使这是一个C++问题),它以各种方式强调这一事实.