2012-08-06 8 views
1

저는 초보자입니다. 필자는 배열을 함수 매개 변수, 인수 또는 함수에서 배열을 반환하는 방법으로 사용하는 방법을 많이 알지 못합니다. 내 지식에, 아래 코드는 잘 작동합니다. 그러나 나는 문제가 어디 있는지 알 수 없다. 이 기능은 제대로 작동하지 않습니다.배열을 함수 매개 변수로 사용

//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; 
} 
+1

실제로 * 함수 인수로 배열을 직접 전달하거나 함수 결과로 하나를 반환 할 수 없습니다. 매개 변수 선언'int array []'는 실제로는 포인터 인'int * array'을 의미합니다 (이것은 매개 변수 선언에만 * 적용됩니다). 추천 도서 : [comp.lang.c FAQ] (http://www.c-faq.com/)의 6 절. –

답변

3

만 더 가면, 당신은 다시 역 배열의 중간까지 갈 필요가 배열 :

을 그래서이 :

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

가되어야한다

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

대단히 감사합니다. 방금 포럼에 게시 한 직후에 나 자신을 알아 냈습니다. 매우 감사합니다. –

0

반대로 번을 수행하는 것처럼 보입니다..

즉, 시작과 끝 요소를 즉시 교체하고 반복이 끝나면 다시 바꿉니다. 즉, 같은 배열로 끝납니다.

다음 중 하나를 수행 할 수 있습니다 : 당신이 원래의 배열을 다시 채우려면 나도 몰라 (

  1. 은 배열을 통해 반만 스왑을 수행하거나
  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를 추가하십시오.

관련 문제