【发布时间】:2014-09-22 23:53:56
【问题描述】:
我有一个设置以下变量的主函数:
double matrix[numVectors][size] = {
{0.183963, 0.933146, 0.476773, 0.086125, 0.566566, 0.728107, 0.837345, 0.885175, 0.600559, 0.142238},
{0.086523, 0.025236, 0.252289, 0.089437, 0.382081, 0.420934, 0.038498, 0.626125, 0.468158, 0.247754},
{0.969345, 0.127753, 0.736213, 0.264992, 0.518971, 0.216767, 0.390992, 0.242241, 0.516135, 0.990155}
};
double result1[size], result2[size];
double *ptr_matrix = &matrix[0];
double *ptr_result1 = &result1[0];
double *ptr_result2 = &result2[0];
以上是试图做的是:
- 创建一个包含三行 10 个双精度数的数组
- 创建两个包含 10 个双精度的空数组
- 创建指向矩阵的指针
- 创建指向两个空数组的指针
然后,我试图将所有三个指针都传递给另一个函数。这个另一个函数将遍历矩阵行(仅行,它不访问整个矩阵空间),使用行(作为数组)执行计算。最终结果是开头声明的两个空数组最终分别成为矩阵中的一行。
这是第二个函数的原型:
void smallestSum(double (*mat)[size], int num, double *first, double *second)
此函数遍历矩阵行(0/1、0/2、1/2)的每个组合并检查它们的值的总和。产生最小和的两个数组最终从上面变成result1和result2。
鉴于这是我第一次真正深入研究指针/数组/矩阵领域,我有几个问题:
- 我是否正确地“获取”了指向矩阵的指针?还是我需要获取指向矩阵第一个值的指针?
- 在
smallestSum()中,我可以像往常一样迭代数组吗(使用for (int i = 0; i < num; i++)?
【问题讨论】:
-
使用
vector<vector<double>>然后传递给你的函数,vector<vector<double>>& v瞧!
标签: c++ c arrays pointers matrix