如何使用函数参数中的int指针来获取2d数组中最大值的索引并返回指针
How can I use the int pointers in the parameter of the function to get the indices of the largest value in the 2d array and return the pointer?
double * matrix_max_1(double mat[][COL], int r, int* pi, int* pj) {
double * ptrmat = 0;
double max = 0;
for (pi = 0; *pi <= ROW; pi++)
for (pj = 0; *pj <= COL; pj++) {
if (mat[*pi][*pj] > *ptrmat) {
ptrmat = &mat[*pi][*pj];
}
}
return ptrmat;
}
函数中的int r参数应该用作行数,但我已经定义了一个常量ROW。此函数的主要用途是返回指向2d数组中最大元素的指针。当我以当前形式运行它时,程序会崩溃。
您对索引的使用完全是伪造的:
for (pi = 0; *pi <= ROW; pi++)
pi是一个设置为0的指针,然后用*pi<=取消引用它行?pj也是如此。。。还有*pj和*pi是什么意思?
使用这样的索引:
double* currentMax = &mat[0][0];
for (size_t i = 0; i < ROW; i++)
for (size_t j = 0; j < COL; j++) {
if (mat[i][j] > *currentMax) {...
这有很多问题。
double * ptrmat = 0;
不是一个很好的价值开始;每次你想取消引用它时,都需要将它与空指针进行比较。
double max = 0;
也不是一个很好的起始值-如果所有元素都是负数怎么办?
for (pi = 0; *pi <= ROW; pi++)
是胡说八道pi
是指向应该存储结果的位置的指针
在这里,你用空指针覆盖它,然后立即取消对它的引用。
增加pi
也没有任何意义
(即使你修复了这个问题,*pi = 0
和(*pi)++
,你也会无条件地覆盖*pi
,不是存储最大值的索引,而是存储循环终止的索引。)
此外,最大有效索引是r - 1
,而不是ROW
下一个循环的最大有效索引是COL - 1
,而不是COL
。
if (mat[*pi][*pj] > *ptrmat)
如果您修复了其他错误,这将失败,因为ptrmat
是第一次迭代中的空指针。
相反,
- 假设第一个矩阵元素是最大值
- 循环使用局部变量,并且只有在知道答案时才将它们的值存储在"out"参数中
类似这样的东西:
double* matrix_max_1(double matrix[][COL], int rows, int* row, int* column) {
int max_row = 0;
int max_column = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < COL; j++) {
if (matrix[i][j] > matrix[max_row][max_column]) {
max_row = i;
max_column = j
}
}
}
if (row != nullptr) {
*row = max_row;
}
if (column != nullptr) {
*column = max_column
}
return &matrix[max_row][max_column];
}
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 整数溢出,最大值为 pow(10,19)
- 以C++递归方式查找向量中的最大值
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 如何使用可变参数模板类使用模板元编程获得最大值
- C++不同的最小最大值实现
- Vec3b:r/g/b 颜色的最大值为 254,而不是 255
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 如何返回指向链接列表中最大值的指针
- 如何使用函数参数中的int指针来获取2d数组中最大值的索引并返回指针
- 使用动态内存分配和指针查找最大值、最小值和平均值
- 使指针类型围绕其最大值
- 函数,它接受三个参数:指向双数组的指针、指向最小值的指针和指向最大值元素的指针