簡體   English   中英

使用數組作為函數參數

[英]using array as function parameter

我是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;
}

你只需要直到數組的中間,如果你去更多,你重新反轉數組:

所以這:

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

應該:

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

它看起來像你在兩次反向執行。

也就是說,您可以立即交換開始和結束元素,並在迭代結束時再次交換它們。 即你最終得到相同的數組。

你可以:

  1. 只在數組中途執行交換,或者
  2. 從第一個反向填充第二個數組(我不知道你是否要重新填充原始數組,但是 - 你可能需要將其復制回來)

數組沒有問題。 你的算法有問題。 //使用函數反轉數組

#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條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM