数组的反向不起作用

用户名

这是我的主要:

int main(){
    int array[] = {1,2,3,4,5,6};
    int i = 0;
    reverse(array,6);

    for(i=0; i < 6; i++)
       printf("%d\n",array[i]);

}

这是我的反向功能:

void reverse(int * array,int n){
    int i;
    for(i=0; i < n; i++){
        int tmp = array[i];
        array[i] = array[n-i];
        array[n-i] = tmp; 
    }
}

我不明白为什么我的输出与输入相同:

1 2 3 4 5 6

我的函数调用没有副作用吗?怎么了?

Granmirupa

您只需要在n / 2处停止循环,否则将反转数组(结束为n / 2),然后再次反转数组(从n / 2到n)

void reverse(int * array,int n){
    int i;
    for(i=0; i < n/2; i++){
        int tmp = array[i];
        array[i] = array[n-1-i];
        array[n-1-i] = tmp; 
    }
}

此外,您需要使用n-1-i而不是ni

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章