数组的最大值

时间:2018-03-12 19:00:11

标签: c++ arrays pointers

如何使用指针找到数组的最大值?我必须使用cpp + header combo并且不允许使用[]。这是代码的一部分。

的main.cpp

const int NUMBERS = 30;

int main() {

int array[NUMBERS] = { 1, 3, 6, 9 };
sort(array, array + NUMBERS);

...

std::cout << max_v1(array, NUMBERS) << std::endl;
std::cout << max_v2(array, array + NUMBERS) << std::endl;
}

我得到了arrays.cpp并在其下面:

int max_v1(int *ptr, int size)
{
    //TODO
}

int max_v2(int *firstptr, int *lastptr)
{
    //TODO
}

1 个答案:

答案 0 :(得分:0)

这是一个可以帮助你的小图。

指向第一个元素的数组指针:

|1|3|6|9|
 ^
 ptr

取消引用以获取价值:

*ptr == 1

数组指针+大小(指向最后一个元素的位置):

|1|3|6|9|
         ^
         ptr + size

指向最后一个元素的数组指针:

|1|3|6|9|
       ^
       ptr + size - 1

取消引用以获取值:

*(ptr + size - 1) == 9

因此,函数1应如下所示:

int max_v1(int *ptr, int size)
{
    return *(ptr + size - 1);
}

你能自己做第二个功能吗?

P.S。确保作为第二个参数传递的NUMBERS等于数组的实际大小,或者它不起作用(由于上面显示的明显原因)