使用数组作为函数参数

时间:2012-08-06 08:41:49

标签: c arrays function parameters

我是c的初学者。我不知道如何使用数组作为函数参数,参数或如何从函数返回数组。据我所知,下面的代码应该可以正常工作。但我无法解决问题所在。该功能无法正常工作。

//reversing an array using function
#include<stdio.h>
void rev(int array[],int length)
{
    int k,j,temp;
    for(k=length-1,j=0;k>=0&&j<length;k--,j++){
        temp=array[k];
        array[k]=array[j];
        array[j]=temp;
    }
}
int main()
{
    int c,arr[]={1,2,3,4,5,6,7,8,9};
    rev(arr,9);
    for(c=0;c<9;c++){
        printf("%d ",arr[c]);
    }
    return 0;
}

3 个答案:

答案 0 :(得分:3)

你只需要直到数组的中间,如果你去更多,你重新反转数组:

所以这个:

for(k=length-1,j=0;k>=0&&j<length;k--,j++){

应该是:

for(k=length-1,j=0;k > j;k--,j++){

答案 1 :(得分:0)

在我看来,你正在执行两次反向

也就是说,您可以立即交换开始和结束元素,并在迭代结束时再次交换它们。即你最终得到相同的数组。

你可以:

  1. 仅在数组中途执行交换,或
  2. 从第一个数组反向填充第二个数组(我不知道你是否要重新填充原始数组,但是 - 你可能需要将其复制回来)

答案 2 :(得分:0)

数组没问题。你的算法有问题。 //使用函数

反转数组
#include<stdio.h>
void rev(int array[],int length)
{
    int k,j,temp;
    for(k=length-1,j=0;k>=0 && j<length / 2; k--,j++){
        temp=array[k];
        array[k]=array[j];
        array[j]=temp;
    }
}

这个反向数组。你的算法反转了两次。所以只需添加/ 2 in条件。