c++ - 'double (*bag)[VECT_SIZE]' 是什么函数参数?

标签 c++ arrays pointers

这是一个 C++ 编程作业。我们使用的函数原型(prototype)具有以下格式:

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);

最佳答案

它是指向 VEC_SIZE double 组的指针。这是 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);

关于c++ - 'double (*bag)[VECT_SIZE]' 是什么函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963332/

相关文章:

c++ - 二叉搜索树中的节点拒绝删除

c++ - Fd 大于 1024 时 Select 和 FD_SET 的行为

c++ - 为什么大型本地数组会使我的程序崩溃,而全局数组却不会?

android - ListView 不显示任何项目

c - 为什么 sigaction 处理程序中的上下文是一个空指针?

c++ - 为什么 std::set 没有 "contains"成员函数?

javascript - 如何在 Laravel 4 中将我的 PHP 数组转换为 Javascript 数组

php - JSON多维数组使用mysql_fetch_assoc

c++ - char* 到 const wchar_t * 转换

c++ - 将指针与引用进行比较