본문 바로가기

C언어/C언어 문법

[C언어] 함수의 선언, 호출, 정의 / 반환(return), 매개변수, 전달인자, 파라미터(parameter), 아규먼트(argument)

728x90
반응형

함수 (전달인자, 반환값)

 

 

함수는 여러 번 반복되는 코드를 한 번만 쓰고 싶거나 긴 코드를 분할해서 작성할 때 사용한다.

 

함수에는 매개변수(입력값)와 반환값(출력값)이 존재한다.

 

그러나 매개변수와 반환값이 필수는 아니다.

 

 

 

예를 들어 main 함수는

 

int main ()
{
	return 0;
}

 

의 형태로 이루어져 있다.

 

 

 

 

여기서 소괄호안에 들어갈 값이 매개변수이고 return 뒤의 값이 반환값이다.

 

따라서 main 함수는 매개변수가 없고 반환값이 0인 함수라고 할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

함수 선언

 

함수를 선언하는 방법은 다음과 같다.

 

 

 

 

 

매개변수는 함수 밖에서 입력받은 값을 함수 안에서 처리할 때 사용된다.

 

반환값은 함수가 반환할 값이고 반환형은 그 반환값의 자료형이 된다.

 

따라서 위 코드는 두 개의 정수를 입력받아 더한 값을 출력하는 'alpha'라는 이름의 함수이다.

 

'alpha' 함수는 2개의 매개변수가 있고 int형 값을 반환하는 함수가 된다.

 

'alpha' 함수를 선언하고 사용하는 방법은 다음과 같다.

 

#include <stdio.h>
#pragma warning(disable:4996)

int alpha (int a, int b)
{
    return a+b;
}

int main ()
{
    int k;
    int j;
    printf("두 개의 정수 입력 : ");
    scanf("%d %d", &k, &j);
    printf("두 정수를 더한 값 : %d", alpha(k, j));
    return 0;
}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

함수의 선언과 정의 분리

 

함수의 선언과 정의를 분리할 수도 있다.

 

#include <stdio.h>
#pragma warning(disable:4996)

int alpha (int a, int b);

int main ()
{
    int k;
    int j;
    printf("두 개의 정수 입력 : ");
    scanf("%d %d", &k, &j);
    printf("두 정수를 더한 값 : %d", alpha(k, j));
    return 0;
}

int alpha (int a, int b)
{
    return a+b;
}
 

위 코드는 함수 'alpha'를 먼저 선언만 해준 후에 main 함수 아래에서 정의를 해준 코드이다.

 

선언만 먼저 할 때에는 함수에 세미콜론을 붙여야 한다.

 

정의를 분리해서 작성하더라도 함수를 사용하기 전에 선언을 해주어야 하는 것은 마찬가지이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

return

 

return에는 두 가지 의미가 있다.

 

함수를 종료하겠다는 의미와 값을 반환하는 의미를 지닌다.

 

 

 

그런데 return 은 두 가지 의미 중 한 가지 의미만으로 사용될 수도 있다.

 

값을 반환하지 않는 함수에 return; 만을 사용하여 함수를 종료하겠다는 의미만을 사용할 수도 있다.

 

 

 

예를 들어 양수인지 음수인지 판단하는 함수 'judge'를 만들어보겠다.

 

이 'judge' 함수는 음수 또는 0을 받으면 그냥 종료하고 양수를 입력받으면 "양수를 입력받았습니다"라고 출력하게 하려고 한다.

 

따라서 'judge' 함수는 다음과 같이 작성하여 쓸 수 있다.

 

#include <stdio.h>
#pragma warning(disable:4996)

void judge (double a)
{
    if (a>0)
        printf("양수를 입력받았습니다.");
    else if (a<=0)
        return;
}
int main ()
{
    double a;
    printf("임의의 실수하나를 입력하세요 : ");
    scanf("%lf", &a);
    judge(a);
    return 0;
}
 

 

return 을 사용하지 않아도 함수는 정상적으로 작동할 수 있다.

 

 

 

 

따라서 다음과 같은 코드도 오류 없이 실행될 수 있을 것이다.

 

#include <stdio.h>
#pragma warning(disable:4996)

void judge (double a)
{
if (a>0)
    printf("양수를 입력받았습니다.");
}
int main ()
{
    double a;
    printf("임의의 실수하나를 입력하세요 : ");
    scanf("%lf", &a);
    judge(a);
}
 

그러나 값을 반환하지 않음에도 return 을 사용하는 이유는 기계에 함수를 정상적으로 종료했다는 의미를

 

전달하여 오류 등을 미리 방지할 수 있기 때문이다.

 

 

 

 

 

 

 

 

 

파라미터(Parameter), 아규먼트(Argument)

 

 

함수의 구성요소를 부르는 용어 중 파라미터, 매개변수, 아규먼트, 전달인자라는 용어가 있다.

 

우선 파라미터와 매개변수는 같은 의미이고, 아규먼트와 전달인자는 같은 의미이다.

 

이 용어들을 설명하기 위해 아까 썼던 코드를 다시 사용하겠다.

 

#include <stdio.h>
#pragma warning(disable:4996)

int alpha (int a, int b)
{
    return a+b;
}

int main ()
{
    int k;
    int j;
    printf("두 개의 정수 입력 : ");
    scanf("%d %d", &k, &j);
    printf("두 정수를 더한 값 : %d", alpha(k, j));
    return 0;
}

 

 

위 코드에서 파라미터(Parameter), 즉 매개변수는 int a, int b이다.

 

파라미터(매개변수)는 함수 밖의 값을 함수 안에서 사용할 수 있게 연결해 주는 변수이다.

 

위 코드에서 아규먼트(Argument), 즉 전달인자는 k, j이다.

 

함수가 다른 곳에서 호출되어 사용될 때 전달받은 실제 값이 아규먼트(전달인자)이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'C언어 > C언어 문법' 카테고리의 다른 글

[C언어] 지역변수, 전역변수  (0) 2024.02.11
[C언어] 재귀함수  (0) 2024.02.10
[C언어] switch문  (0) 2024.02.10
[C언어] break, continue  (0) 2024.02.10
[C언어] 조건문 (if문, else if문)  (0) 2024.02.09