c - 用指针打印最大值

标签 c pointers

#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;
}

我想在数组 arr 中打印最大和最小数字。我认为没有什么问题,但我看不到任何输出。我尝试了更多的指针和地址表达方式。那么请问在这种情况下如何查看该程序的输出?谢谢。

最佳答案

增加 i 而不是 len:

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

*p1 = min;
*p2 = max;

(此外,*p1*p2 的赋值混淆了)。

其他一些技巧

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

关于c - 用指针打印最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274925/

相关文章:

c++ - 更改指向数组的指针以获取特定的数组元素

c - 如何脱离函数?

Android native 进程: stack corruption detected

const char * 与 const char ** 函数参数

c - 我想制作一个用于将帕斯卡代码转换为c代码的c代码

c++ - 指向右值对象成员变量的指针

C 程序段错误

c++ - 使用字符串数组 : arrays of pointers - Are they like multidimensional arrays?

c++ - 具体类型的 unique_ptr

c - fwrite 是如何工作的?