如何在 C++ 中使用指针获取最小和最大数

How to get the minimum and maxium number using pointers in C++

我试图在 C++ 中使用指针查找最小值和最大值,但在我从视频共享网站获得的这段代码中给出了错误的值。当我输入 1 2 3 4 5 6 时,它的答案是最小值是 2,最大值是 2。

这是我的代码:

#include <iostream>
 using namespace std;
int main()
{
    int value[6], * maxi, * mini, a;
    cout << "Enter six numbers with space: ";
    for (int a = 0; a < 6; a++)
        cin >> *(value + a);
    maximum = value;
    minimum = value;
    for (i = 1; i < 6; i++)
    {
        if (*(value + i) > * maximum)
            *maximum = *(value + i);
    }
    for (i = 0; i < 6; i++)
    {
        if (*(value + i) < *minimum)
            *minimum = *(value+ i);
    }
    /* Print variable value with their memory address */
    cout << "Integer with the Maximum value = " << *minimum << ", Address of integer = " << &maximum  
 << endl;
    cout << "Integer with the minimum value = " << *minimum  << ", Address of integer = " << &minimum  
  << endl;
    return 0;
  }

这是代码的结果

输入由 space 分隔的五 (6) 个数字:1 2 3 4 5 6

整数最大=2,整数地址=00AFF9F4

整数最小值=2,整数地址=00AFF9E8

你在这个循环中犯了一个错误

for (i = 1; i < 6; i++)
{
    if (*(value + 1) > * maximum)
        *maximum = *(value + i); <--- set max to the next value.
}

应该是

for (i = 1; i < 6; i++)
{
    if (*(value + i) > * maximum) 
        maximum = value + i; // set max to the pointer.
}

完整代码如下:

#include <iostream>
#define N_VALUES 6

using namespace std;
int main()
{
    int value[N_VALUES], *maximum, *minimum, i;
    cout << "Enter six numbers with space: ";
    for (i = 0; i < N_VALUES; i++) cin >> *(value + i);
    
    maximum = value;
    minimum = value;
    
    for (i = 1; i < N_VALUES; i++) {
        if (*(value + i) > (*maximum)) {
            maximum = (value + i);
        }
    }
    
    for (i = 1; i < N_VALUES; i++) {
        if (*(value + i) < (*minimum)) {
            minimum = (value+ i);
        }
    }
    
    /* Print variable value with their memory address */
    cout << "Integer with the Maximum value = " << *maximum << ", Address of integer = " << maximum << endl;
    cout << "Integer with the minimum value = " << *minimum  << ", Address of integer = " << minimum << endl;
    return 0;
}