함수

함수 (Functions)

함수는 C 언어에서 복합 문(함수 본문)을 식별자(함수 이름)와 연결하는 구성 요소예요. 모든 C 프로그램은 main 함수에서 실행을 시작하는데, main은 종료되거나, 사용자 정의 함수나 라이브러리 함수 같은 다른 함수를 호출해요.

// function definition.
// defines a function with the name "sum" and with the body "{ return x+y; }"
int sum(int x, int y) 
{
    return x + y;
}

함수는 함수 선언이나 함수 정의에 의해 도입돼요.

함수는 0개 이상의 매개변수를 받을 수 있는데, 매개변수는 함수 호출 연산자인자로부터 초기화돼요. 그리고 return 문으로 호출자에게 값을 돌려줄 수 있어요.

int n = sum(1, 2); // parameters x and y are initialized with the arguments 1 and 2

함수 본문은 함수 정의에서 제공돼요. C99부터는 non-inline 함수로, 어떤 표현식에서(평가되지 않는 경우 제외) 쓰이는 함수는 프로그램에서 딱 한 번만 정의돼야 해요.

중첩 함수는 없어요(비표준 컴파일러 확장이 허용하는 곳 제외). 각 함수 정의는 파일 스코프에 나타나야 하고, 함수는 호출자의 지역 변수에 접근할 수 없어요.

int main(void) // the main function definition
{
    int sum(int, int); // function declaration (may appear at any scope)
    int x = 1;  // local variable in main
    sum(1, 2); // function call

//    int sum(int a, int b) // error: no nested functions
//    {
//        return  a + b; 
//    }
}
int sum(int a, int b) // function definition
{
//    return x + a + b; //  error: main's x is not accessible within sum
    return a + b;
}

더 알아보기

  • 함수 선언과 함수 정의 문서를 잇달아 보면 함수의 전체 구조가 잡혀요.
  • 가변 인자 함수와 inline에 대해 더 알고 싶다면 관련 문서를 참고하면 좋아요.
  • cppreference의 함수 원문에서 최신 표준 변경을 확인할 수 있어요.