首页 > 解决方案 > 如何在 C 中反转 int 数组?

问题描述

我正在尝试反转数组。

#include<stdio.h>
//code to reverse the current array1
void reverse(int array1[]){
    int i;
    int n=3;
    for  (i = 0; i <n; i++)
    {
        array1[i]=array1[n-i-1];
        printf("%d\t",array1[i]);
    }

}

int main(){
    int array1[]={1,2,3};
     reverse(array1);
}
result 3 2 3

当我编译这段代码时,我在数组 [0] 位置得到 3 我的错误是什么?

标签: c

解决方案


您正在读取和写入同一个数组,因此某些写入会破坏尚未读取的数据。

反转的典型方法是交换前半部分和后半部分的元素。

void reverse(int array1[]){
    int i;
    int n=3;
    for  (i = 0; i <n; i++)
    {
        if (i < n-i-1) /* avoid swapping the same pair twice */
        {
            int tmp=array1[i];
            array1[i]=array1[n-i-1];
            array1[n-i-1]=tmp;
        }
        printf("%d\t",array1[i]);
    }

}

推荐阅读