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(1020);
 
cs

위와 같이 호출하게 된다면,

인수로 10,20이 전달되고


매개 변수는 int형으로 x=10. y=20으로 전달됩니다.




반환값 


함수가 호출한 곳으로 반환하는 값을 뜻합니다.

예를 들어서

return x; 를 하게되면 변수 x의 값이 호출한 곳으로 반환됩니다.

1개만 반환이 가능합니다.



1
2
value = max(1020);
 
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