Functions
함수는 C 언어 구성 요소로, 복합 문장 (함수 본체)을 식별자 (함수 이름)와 연결합니다. 모든 C 프로그램은 main 함수 에서 실행을 시작하며, 이는 종료되거나 다른 사용자 정의 또는 라이브러리 함수를 호출합니다.
// 함수 정의 // "sum"이라는 이름의 함수를 정의하며 함수 본문은 "{ return x+y; }"입니다 int sum(int x, int y) { return x + y; }
함수는 function declaration 또는 function definition 으로 도입됩니다.
함수는 0개 이상의 매개변수(parameters) 를 받을 수 있으며, 이는 함수 호출 연산자 의 인수(arguments) 로부터 초기화됩니다. 또한 return 문 을 통해 호출자에게 값을 반환할 수 있습니다.
int n = sum(1, 2); // 매개변수 x와 y가 인수 1과 2로 초기화됨
함수의 본문은 함수 정의 에서 제공됩니다. 각 non- inline (since C99) 함수는 표현식에서 사용되는 경우 ( 평가되지 않는 경우 를 제외하고) 프로그램에서 한 번만 정의 되어야 합니다.
중첩 함수는 없습니다(비표준 컴파일러 확장을 통해 허용되는 경우 제외): 각 함수 정의는 파일 범위에 나타나야 하며, 함수는 호출자의 지역 변수에 접근할 수 없습니다:
int main(void) // main 함수 정의 { int sum(int, int); // 함수 선언 (어떤 스코프에서도 나타날 수 있음) int x = 1; // main의 지역 변수 sum(1, 2); // 함수 호출 // int sum(int a, int b) // 오류: 중첩 함수 불가 // { // return a + b; // } } int sum(int a, int b) // 함수 정의 { // return x + a + b; // 오류: main의 x는 sum 내에서 접근 불가 return a + b; }
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 6.7.7.4 Function declarators (including prototypes) (p: TBD)
-
- 6.9.2 Function definitions (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
-
- 6.7.6.3 함수 선언자 (프로토타입 포함) (p: 96-98)
-
- 6.9.1 함수 정의 (p: 113-115)
- C11 표준 (ISO/IEC 9899:2011):
-
- 6.7.6.3 함수 선언자 (프로토타입 포함) (p: 133-136)
-
- 6.9.1 함수 정의 (p: 156-158)
- C99 표준 (ISO/IEC 9899:1999):
-
- 6.7.5.3 함수 선언자 (프로토타입 포함) (p: 118-121)
-
- 6.9.1 함수 정의 (p: 141-143)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 3.5.4.3 함수 선언자 (프로토타입 포함)
-
- 3.7.1 함수 정의
참고 항목
|
C++ 문서
참조:
함수 선언
|