swap 함수 사용하려고 하는데 (간단한코드이니 답변좀 ㅠㅠ)

조회수 1444회

include

void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; return *x, *y; } int main() { int a=10, b=20; swap(a, b); printf("a: %d, b: %d", a, b); } 이거 실행하면 오류나는데 왜그럴까요 ㅠㅠ

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기
    #include <stdio.h>
    
    void swap(int *x, int *y)
    {
        int temp;
        temp = *x; 
        *x = *y;
        *y = temp;
        return *x, *y;
    }
    int main()
    {
        int a=10, b=20;
        swap(a, b);
        printf("a: %d, b: %d", a, b);
    }
    

    어디서부터 이야기를 풀어야할지 난감하군요.

    일단 수학에서 함수란 입력 X값에 반환되는 Y값은 1개입니다.

    2개가 리턴된다면 함수가 아닙니다.

    간혹 파이썬 같은 언어의 경우 꼭 2개 이상이 리턴되는 것으로 보이지만 그것은 1개의 tuple 이 리턴되는 겁니다.

    c 언어는 튜틀 같은 것이 없으르로 2개이상의 값을 리턴하고 싶다면 구조체를 이용하여 1개의 값(구조체)을 리턴해야 합니다.

    void swap(int *x, int *y)
    {
        int temp;
        temp = *x; 
        *x = *y;
        *y = temp;
        return *x, *y;
    }
    

    에서

    void swap(int *x, int *y)
    {
        int temp;
        temp = *x; 
        *x = *y;
        *y = temp;
    }
    

    와 같이 되어야 합니다.

    그리고 main 함수도 아래와 같이 포인터가 대입되어야 합니다.

    int main()
    {
        int a=10, b=20;
        swap(&a, &b);  // swap 함수는 포인터를 대입해야 합니다.
        printf("a: %d, b: %d", a, b);
    }
    

    정리하면 아래와 같이 되어야 합니다.

    void swap(int *x, int *y)
    {
        int temp;
        temp = *x; 
        *x = *y;
        *y = temp;
    }
    
    int main()
    {
        int a=10, b=20;
        swap(&a, &b);  // swap 함수는 포인터를 대입해야 합니다.
        printf("a: %d, b: %d", a, b);
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)