C 用指针打印最大值 #包括 void MaxandMin(int*arr、int len、int**p1、int**p2); 内部主(空) { int-arr[5]={1,3,5,2,4}; int len=sizeof(arr)/sizeof(int); int*maxPtr; int*minPtr; int**dptr1=&minPtr; int**dptr2=&maxPtr; 最大和最小值(arr、len、dptr1、dptr2); printf(“最大值为%d,最小值为%d\n”,*maxPtr,*minPtr); 返回0; } void MaxandMin(int*arr、int len、int**p1、int**p2) { int*max; int*min; 最大值=最小值=&arr[0]; 对于(int i=0;i

C 用指针打印最大值 #包括 void MaxandMin(int*arr、int len、int**p1、int**p2); 内部主(空) { int-arr[5]={1,3,5,2,4}; int len=sizeof(arr)/sizeof(int); int*maxPtr; int*minPtr; int**dptr1=&minPtr; int**dptr2=&maxPtr; 最大和最小值(arr、len、dptr1、dptr2); printf(“最大值为%d,最小值为%d\n”,*maxPtr,*minPtr); 返回0; } void MaxandMin(int*arr、int len、int**p1、int**p2) { int*max; int*min; 最大值=最小值=&arr[0]; 对于(int i=0;i,c,pointers,C,Pointers,我想打印数组arr中的最大值和最小值。我认为没有问题,但我看不到任何输出。我尝试了更多的指针和地址表达式。那么,我可以问一下,在这种情况下,我怎样才能看到这个程序的输出呢?谢谢。增量i而不是len: #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中的最大值和最小值。我认为没有问题,但我看不到任何输出。我尝试了更多的指针和地址表达式。那么,我可以问一下,在这种情况下,我怎样才能看到这个程序的输出呢?谢谢。

增量
i
而不是
len

#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;
}
for(int i=0;i
(另外,
*p1
*p2
的赋值是混合的)

其他一些提示

  • 您可以只写
    max=min=arr
  • 您不需要
    dptr1
    dptr2
    MaxandMin(arr,len,&minPtr,&maxPtr)

原始问题中
min
max
的逻辑正确。如果
max
的当前值小于数组值,则更新
max
for (int i = 0; i < len; i++)
{ ... }

*p1 = min;
*p2 = max;