вывести макс с указателем - PullRequest
0 голосов
/ 10 мая 2018
#include <stdio.h>

void MaxandMin(int * arr, int len,int **p1, int **p2);

int main(void)
{
    int arr[5] = {1,3,5,2,4};
    int len = sizeof(arr) / sizeof(int);
    int * maxPtr;
    int * minPtr;
    int ** dptr1 = &minPtr;
    int ** dptr2 = &maxPtr;

    MaxandMin(arr,len, dptr1, dptr2);

    printf("max is %d, min is %d\n", *maxPtr, *minPtr);

    return 0;   
}

void MaxandMin(int * arr, int len, int **p1, int **p2)
{
    int * max;
    int * min;
    max = min = &arr[0];

    for (int i = 0; i < len; len++)                     
    {
        if (*max < *(arr + i))
            max = (arr + i);
        if (*min > *(arr + i))
            min = (arr + i);
    }

    *p1 = max;
    *p2 = min;
}

Я хочу напечатать максимальное и минимальное число в массиве обр.Я думаю, что в этом нет ничего плохого, но я не вижу результатов.Я попробовал еще несколько выражений указателя и адресов.Могу ли я спросить, как я могу увидеть результаты этой программы в этой ситуации?спасибо.

1 Ответ

0 голосов
/ 10 мая 2018

Увеличение i, а не len:

for (int i = 0; i < len; i++)
{ ... }

*p1 = min;
*p2 = max;

(Кроме того, назначения для *p1 и *p2 смешаны).

Несколько другихсоветы

  • Вы можете просто написать max = min = arr.
  • Вам не нужны dptr1 и dptr2: MaxandMin(arr,len, &minPtr, &maxPtr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...