变量与指针引用比较,C语言

时间:2016-03-09 16:54:20

标签: c arrays pointers

为什么不将min*(arr+i)进行比较? 如果此代码中的语句未被执行

#include <stdio.h>
int main()
{
    int i, min;
    int arr[5];
    for (i = 0; i <= 4; i++)
        scanf("%d", &arr[i]);

    min = *(arr);
    for (i = 1; i <= 4; i++)
    {
        if ( min < *(arr + i) )
        {
            printf("min for %d is %d", i, min);
            min = *(arr + i);
        }
    }

    printf("%d\n", min);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

代码正在执行,问题是您的情况有误:

min=*(arr);
for(i=1;i<=4;i++)
{
    if ( min > *(arr+i) )   // Changed < into >
    {
        printf("min for %d is %d",i,min);
        min = *(arr+i);
    }
}

您首先将第一个元素作为最小元素。稍后,对于每个元素,您需要检查当前最小值是否大于当前值。如果是这种情况,请更新。