我想做一个返回数组的函数,例如:
#include "iostream"
#include "string"
using namespace std;
void minus(float v1[3], float v2[3], float v3[3][3]);
int main()
{
float a[3] = {1,0,0};
float b[3] = {3,2,5};
float c[3];
minus(a,b,c);
cout << c[0] << "C1" << endl;
cout << c[1] << "C2" << endl;
cout << c[2] << "C3" << endl;
cin.get();
return 0;
}
void minus(float v1[3], float v2[3], float v3[3])
{
int i;
float aux;
for (i = 0; i < 2; i++)
{
v3[i]=v1[i]-v2[i];
return;
}
}
错误是
[Error] cannot convert 'float*' to 'float (*)[3]' for argument '3' to 'void rectavector(float*, float*, float (*)[3])'"
我不明白这个错误。我将通过引用返回v3。
答案 0 :(得分:1)
编译错误总是附加一个行号,因此您知道哪一行代码导致了问题。
发布时,您可以通过注释标记相关行,例如
float c[3];
minus(a,b,c); // COMPILATION ERROR HERE
假设您的编译错误确实在我猜测的地方,那么问题在于前向声明和函数定义之间的不匹配:
void minus(float v1[3], float v2[3], float v3[3][3]);
... (some code omitted)
void minus(float v1[3], float v2[3], float v3[3])
编译器从上到下检查您的代码。当它看到您的minus
函数收到float v3[3][3]
,并且您尝试发送float c[3]
时,就会抱怨。
如果您的编译器输出其他错误消息,您可以看到它抱怨真正的问题 - 声明和定义之间的不匹配 - 稍后。