C언어 입력받은 변수의 값을 다른함수에서도 사용하는 법에 관한 질문

조회수 488회

selectAction 함수는 사용자로부터 col, row와 direction의 값을 받는 함수 입니다. 이 함수에서 scanf를 통해 값을 받으려 합니다. 입력받은 세가지의 값을 메인함수 및 다른 함수들에서도 사용해야 하는데, 다른 함수에서 이 값이 나오지를 않습니다. 이를 위해서 어떤 코드가 필요한지를 모르겠습니다. selectAction에서 col, row와 direction에 각각 1, 2, d 를 입력받았는데, 밑에 swipe 함수에서 col, row, direction을 부르면 이 값이 아닌 0이 나옵니다. 여기서 막혀 진행할수가 없네요. 조언 부탁드립니다! 이미지

2 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    함수의 지역변수 num1, num2에 값을 입력받고 그 지역변수의 주소값을 함수 밖으로 돌려주고 있는데. 이러면 함수 종료시 지역변수가 사라지고 제대로 동작을 안하게 됩니다.

    함수를 아래와 같이 고치고,

    void selectAction(int* row, int* col, char* direction)
    {
        scanf("%d %d", row, col);
        scanf(" %c", direction);
    }
    

    실제 사용할 때에는 아래와 같이 미리 변수를 만들어 두고, 함수를 사용하시면 됩니다.

        int r = 0;
        int c = 0;
        char d = 'a';
    
        selectAction(&r, &c, &d);
    

    함수 실행후, r,c,d의 값이 바뀌게 됩니다.

    아래 코드 참고하세요.

    • 코드
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    
    void selectAction(int* row, int* col, char* direction)
    {
        scanf("%d %d", row, col);
        scanf(" %c", direction);
    }
    
    int main()
    {
        int r = 0;
        int c = 0;
        char d = 'a';
    
        printf("before: %d %d %c\n", r, c, d);
    
        selectAction(&r, &c, &d);
    
        printf("after: %d %d %c\n", r, c, d);
    
        return 0;
    }
    
    • 결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)