这是一个c ++编程任务。我们使用的函数原型具有以下格式:
void closestPair(double (*bag)[VEC_SIZE], int noVec, double *vecA, double *vecB)
我想弄清楚(* bag)[VEC_SIZE]是什么类型的变量。我假设它是一个指向数组数组的指针,但我尝试传递给它的所有内容都会出现“无匹配函数”错误。我100%知道这是我遇到麻烦的论点。我以为它是一个指向数组数组的指针(这对于我正在尝试用这个函数做什么是有意义的),但这似乎不起作用。
此外,这里是我试图传递给这个函数的测试值,以及函数调用发生的地方:如果有人可以帮我弄清楚如何将这些值传递给函数,并向我解释什么样的变量(* bag)[VECT_SIZE],那就太好了!
double a[10] = {
0.183963, 0.933146, 0.476773, 0.086125, 0.566566, 0.728107, 0.837345, 0.885175, 0.600559, 0.142238
};
double b[10] = {
0.086523, 0.025236, 0.252289, 0.089437, 0.382081, 0.420934, 0.038498, 0.626125, 0.468158, 0.247754
};
double c[10] = {
0.969345, 0.127753, 0.736213, 0.264992, 0.518971, 0.216767, 0.390992, 0.242241, 0.516135, 0.990155
};
//Create and load test array
const int N = 3;
double arrays[3][10];
for (int i = 0; i < 10; ++i) {
arrays[0][i] = a[i];
}
for (int i = 0; i < 10; ++i) {
arrays[1][i] = b[i];
}
for (int i = 0; i < 10; ++i) {
arrays[2][i] = c[i];
}
closestPair(arrays, N, a, b);
答案 0 :(得分:3)
它是指向VEC_SIZE双精度数组的指针。这是VEC_SIZE的X数组的数组加倍衰减的类型。在代码中:
double arr[X][VEC_SIZE] = { /* ... */ };
double a, b;
closestPair(arr, X, &a, &b);
您还可以传递普通数组的地址:
double arr[VEC_SIZE];
double a, b;
closestPair(&arr, 1, &a, &b);
答案 1 :(得分:1)
您正确调用该功能。
closestPair(arrays, N, a, b);
我认为问题是VEC_SIZE
不等于10.所以要么必须重新定义数组arrays
,要么
double arrays[3][VEC_SIZE];
或将VEC_SIZE
的值更改为10。
此外,如果您定义了常量N
,那么最好将arrays
定义为
double arrays[N][VEC_SIZE];
不要在程序中使用幻数(3或10)。