gpt4 book ai didi

c++ - 查找指向数组最大值的指针

转载 作者:行者123 更新时间:2023-11-27 22:42:32 36 4
gpt4 key购买 nike

我写了一个函数,应该“返回”指向数组最大值的指针

void findMax(int arr[], int n, int* pToMax)
{
if (n <= 0)
return;

pToMax = arr;

for (int i = 1; i < n; i++)
{
if (arr[i] > *pToMax) {
pToMax = arr + i;
}
}
}

在 main 中我用

调用它
int nums[4] = { 5, 3, 15, 6 };
int* ptr = nums;
findMax(nums, 4, ptr);

但是,指针值似乎没有从函数中更改,这让我相信第三个参数可能必须是指向指针的指针。但是我认为在函数中用指针做的任何事情都会改变指针(就像引用一样)

编辑:重做函数

void findMax(int arr[], int n, int** pToMax)
{
if (n <= 0)
return;

pToMax = &arr;

for (int i = 1; i < n; i++)
{
if (arr[i] > *(*pToMax)) {
*pToMax = arr + i;
}
}
}

现在我这样调用它

int nums[4] = { 5, 3, 15, 6 };
int* ptr = nums;
findMax(nums, 4, &ptr);

最佳答案

你不需要if (n <= 0)它由循环条件处理

你不需要pToMax = arr; , 你是在调用函数之前做的

要通过引用传递指针以便您可以修改它,请使用 int *&pToMax

 void findMax(int arr[], int n, int *&pToMax)
{
for (int i = 1; i < n; i++)
{
if (arr[i] > *pToMax)
pToMax = &arr[i];
}
}

调用它:

int nums[4] = { 5, 3, 15, 6 };
int* ptr = nums;
findMax(nums, 4, ptr);
std::cout << *ptr; //15

关于c++ - 查找指向数组最大值的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47464577/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com