gpt4 book ai didi

c++ - 将指向数组数组的指针传递给函数

转载 作者:行者123 更新时间:2023-11-28 06:40:53 25 4
gpt4 key购买 nike

我有一个设置以下变量的主函数:

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 个 double 的数组
  • 创建两个包含 10 个 double 值的空数组
  • 创建一个指向矩阵的指针
  • 创建指向两个空数组的指针

然后,我尝试将所有三个指针传递给另一个函数。这个其他函数将遍历矩阵行(仅行,它不访问整个矩阵空间),使用行(作为数组)执行计算。最终结果是在开始时声明的两个空数组最终各自成为矩阵的一行。

这是第二个函数的原型(prototype):

void smallestSum(double (*mat)[size], int num, double *first, double *second)

此函数遍历矩阵行(0/1、0/2、1/2)的每个组合并检查它们值的总和。产生最小总和的两个数组最终变为 result1result2从上面看。

鉴于这是我第一次真正深入研究指针/数组/矩阵领域,我有几个问题:

  • 我是否正确地“得到”了一个指向矩阵的指针?或者我是否需要获取指向矩阵第一个值的指针?
  • smallestSum() , 我可以像往常一样遍历数组吗(使用 for (int i = 0; i < num; i++)

最佳答案

您需要更改 ptr_matrix 的定义,因为它不是指向单个 double 的指针,而是指向整行的指针:

double (*ptr_matrix)[size] = &matrix[0];

然后,您可以按如下方式调用该函数:

smallestSum(ptr_matrix, numVectors, ptr_result1, ptr_result_2);

smallestSum 中,您可以遍历行和列。

注意 size 必须在编译时已知。

如果函数不修改矩阵,请考虑将 const 添加到其第一个参数的类型中。

关于c++ - 将指向数组数组的指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com