int * m = new int [d1 * d2]; (行*列)
for ( j = 0; j < d2; j++ ){
largest = new int(0);
for ( i = j; i < d1*d2; i +=d2){
if ( *(m+i) > *largest){largest = (m+i);}
此代码在列中找到最大的元素。我想要做的是通过使用指针以递归方式在列中查找最大元素。
让我们说我有这样一个专栏:
7
6
5
我找到了最大的元素,在这种情况下是7,它存储在最大的元素中。
现在我想要第二个指针,让我们说
int * ptr2
并使用它来存储我的列中的第二大元素,在这种情况下为6并计算
*最大+ * ptr2
以6和5递增递增(而*最大值保持6且* ptr2保持5)
*最大+ * ptr2
我尝试使用
将ptr2上的初始位置设置为最大值以下的元素ptr2 =最大+ d2
没有正常工作。当最大元素位于列的底部时,也可能会出现问题,那么这条线会将ptr2设置为我猜的数组之外的某个位置。
答案 0 :(得分:0)
我没有尝试编译/运行它,但作为建议:
int *largest, *runnerup;
for ( j = 0; j < d2; j++ ){
int l = 0;
find_max(m, j, &l, &largest, d2);
find_max(m, j, largest, &runnerup, d2);
// do stuff
largest = runnerup;
}
void find_max(int *mx, int col, int *le, int **max, int d2) {
max[0] = le;
for ( i = col; i < d1; i++){
if (max[0] <= m[i * d2] && max[0] != &m[i * d2]) {
max[0] = &m[i * d2];
}
}
}