首页 > 解决方案 > 我必须反转数组 [1,2,3,4,5,6,7] 我被卡住了

问题描述

#include <stdio.h>

int reverse(int *prr, int i)
{
    for (i = 6; i; i--)
    {
        printf("%d is reverse \n", *prr + i);
    }
}

int main()
{
    int arrr[] = {1, 2, 3, 4, 5, 6, 7};
    int *ptr = arrr;
    reverse(ptr, 6);
    return 0;
}

我得到的输出是

7 is reverse
    
6 is reverse
    
5 is reverse
    
4 is reverse
    
3 is reverse

2 is reverse

但不是1!

标签: arrayscpointers

解决方案


循环条件i等效于i != 0(并且对于您的特定用例i > 0)。

也就是说,当i到达时循环将结束0,因此不会打印索引。

为了能够打印最后一个元素,您需要将其包含在循环中,并带有类似i >= 0.


推荐阅读