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
我想打印数组arr中的最大值和最小值。我认为没有问题,但我看不到任何输出。我尝试了更多的指针和地址表达式。那么,我可以问一下,在这种情况下,我怎样才能看到这个程序的输出呢?谢谢。增量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(
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;