如何使用指针找到数组的最大值?我必须使用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
}
答案 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等于数组的实际大小,或者它不起作用(由于上面显示的明显原因)