C언어 입력받은 변수의 값을 다른함수에서도 사용하는 법에 관한 질문
조회수 488회
selectAction 함수는 사용자로부터 col, row와 direction의 값을 받는 함수 입니다. 이 함수에서 scanf를 통해 값을 받으려 합니다. 입력받은 세가지의 값을 메인함수 및 다른 함수들에서도 사용해야 하는데, 다른 함수에서 이 값이 나오지를 않습니다. 이를 위해서 어떤 코드가 필요한지를 모르겠습니다. selectAction에서 col, row와 direction에 각각 1, 2, d 를 입력받았는데, 밑에 swipe 함수에서 col, row, direction을 부르면 이 값이 아닌 0이 나옵니다. 여기서 막혀 진행할수가 없네요. 조언 부탁드립니다!
2 답변
-
함수의 지역변수 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; }
- 결과
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력