簡體   English   中英

試圖打印數組的最大值..但打印垃圾

[英]trying to print largest value of the array..but printing garbage

嘿,我正在嘗試使用函數和指針打印數組中的最大元素。 下面是我的代碼,但它的打印垃圾值。 請幫忙。

void findmax(int arr[],int,int*);
void findMax(int arr[], int n, int* pToMax)
{
    if (n <= 0) 
        return;      // no items, no maximum!

int max = arr[0];
pToMax = &arr[0];

for (int i = 1; i < n; i++)
{
    if (arr[i] > max)
    {
         max = arr[i];
         pToMax = (arr+i);
    }
}
}       
int main()
{
    int nums[4] = { 5, 3, 15, 6 };
    int *ptr;
    findMax(nums, 4, ptr);
    printf("The maximum is at address %u\n", ptr);
    printf("It's at index %d\n",ptr - nums);
    printf("Its value is %d\n", *ptr);
}

使用int *pToMax中的int *pToMax findMax(int arr[], int n, int* pToMax)

調用findMax(nums, 4, ptr); 你只需將ptr作為一個值傳遞。

函數退出后不會反映更新的值。

你需要使用**pToMax

保存地址。

void findMax(int arr[], int n, int** pToMax)
{
    if (n <= 0) 
        return;      // no items, no maximum!

int max = arr[0];
*pToMax = &arr[0]; //Store base address

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

}

打電話給

findMax(nums, 4, &ptr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM