C 프로그래밍/6. 함수
6.3 매개 변수와 반환값.
Recircle
2019. 6. 18. 18:34
6.2장에서 print_stars()함수는 외부로부터 아무 것도 받지 않고 아무 것도 반환하지 않았습니다.
하지만 일반적인 함수를 외부로부터 값들을 전달받고 결과를 반환합니다. 이렇게 함수를 정의하려면,
매개변수와 반환값을 지정하여야합니다.
1 2 3 4 5 6 7 8 9 10 11 | int max(int x, int y) { if (x>y) { return x; } else { return y; } } | cs |
6.2 장과는 달라졌습니다.
(int x, int y) 가 추가되었고 return 이 생겼습니다.
인수와 매개 변수
인수와 매개 변수는 함수를 호출할때 데이터를 주고 받기 위하여 필요합니다.
인수는 호출에 의하여 함수에 실제로 전달되는 값이며, 매개 변수는 이 값을 전달받는 변수입니다.
함수가 호출될 때마다 인수는 함수의 매개변수로 전달됩니다.
1 2 3 4 5 6 7 8 9 10 11 | int max(int x, int y) { if (x>y) { return x; } else { return y; } } | cs |
우리는 위 함수를 호출할때,
1 2 | value = max(10, 20); | cs |
위와 같이 호출하게 된다면,
인수로 10,20이 전달되고
매개 변수는 int형으로 x=10. y=20으로 전달됩니다.
반환값
함수가 호출한 곳으로 반환하는 값을 뜻합니다.
예를 들어서
return x; 를 하게되면 변수 x의 값이 호출한 곳으로 반환됩니다.
1개만 반환이 가능합니다.
1 2 | value = max(10, 20); | cs |
위 코드를 실행시키면, max(10, 20)에 의해 함수로 이동되고 if연산에의해 y값인 20이 더 크다는것을 알게 되었습니다. 이렇게 알게된 함수는 return y;를 통하여 반환하게되면 value는 20이라는 값이 저장되게 됩니다.
반환되는값이 없다면 return; 을 써주면됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h> int max(int x, int y) { if (x>y) { return x; } else { return y; } } int main() { int x, y; printf("정수 2개를 입력하세요 : "); scanf("%d %d", &x, &y); int larger; larger = max(x, y); printf("더 큰값은 : %d", larger); } | cs |
위와 같이 함수와 메인함수사이에 값을 주고 받을수 있게 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /*온도 변환기 333p*/ #include <stdio.h> void printopt() { printf(" \'c\' 섭씨온도에서 화씨온도로 변환\n"); printf(" \'f\' 화씨온도에서 섭씨온도로 변환\n"); printf(" \'q\' 종료\n"); } double F_to_c(double f_temp) { return(f_temp - 32.0) * 5.0 / 9.0; } double C_to_F(double c_temp) { return(9.0 / 5.0) * c_temp + 32; } int main() { char user_input; double user_temp_input; while (1) { printopt(); printf("변환 종류를 입력해주세요.\n맨앞의 1글자만 인식합니다.:"); user_input = getchar(); if (user_input == 'q') { break; } else if (user_input == 'c') { printf("섭씨 온도를 입력해주세요 :"); scanf("%lf", &user_temp_input); printf("변환된 화씨온도는 %lf입니다.\n", C_to_F(user_temp_input)); } else if (user_input == 'f') { printf("화씨 온도를 입력해주세요 :"); scanf("%lf", &user_temp_input); printf("변환된 섭씨온도는 %lf입니다.\n", F_to_c(user_temp_input)); } getchar(); } } | cs |