[C++] 02 함수

김진우·2025년 5월 9일

C++

목록 보기
2/16
post-thumbnail

코드를 만들 때 통상적으로 사용되는 용어인 함수(Function)에 대해 알아보자.


정의

Microsoft에서 정의한 C language 문서에 따르면 함수(Function)는 C언어의 기본 모듈 단위로, 특정 작업을 수행하도록 설계되며, 선언과 명령문을 포함한다.

즉, 특정한 작업을 위해 설계된 모듈 단위라고 할 수 있다.

함수의 분류로 크게는 컴파일러에서 정의가 되어 있는 Predefined function과 사용자(개발자)가 직접 만드는 User defined function가 있다.


함수의 구조

함수 선언

함수 선언은 return type 함수명 (입력 값)으로 되어있다. 만약 선언부와 정의부가 합쳐져 있다면 이 뒤에 {}가 추가되어 기능이 정의된다.

	void f1(int a, int b);
    int f2(int a) {
    	return a;
    }	

return type이 void 일 경우 함수가 끝날때 아무런 반환이 없지만, 다른 type일 경우 반드시 return value가 있어야 한다.

함수의 입력 값은 parameter라고 부르는데 함수의 지역변수로 사용된다. 만약 이 값이 선언되어 있다면 함수를 사용할 때 type이 일치하는 적당한 값을 넣어야 한다.

같은 이름의 parameter가 다른 함수를 여러 개 선언할 수도 있는데, 이를 "오버로딩(overloading)"이라고 한다.

함수의 구문

함수는 선언부, 호출부, 정의부로 나뉘어져 있다.
간단한 코드 예시로 살펴보면

int Add(int a, int b);   	// 선언부

int main() {
	int a = Add(1, 2);  	// 호출부
	return 0;
}
텍스트
int Add(int a, int b) { 	// 정의부
	return a + b;
}

위 코드처럼 세 부분으로 나뉘게 된다.

  • 선언부 : 코드상 main 함수 위쪽에 위치하게 되고, 함수의 내용이 없지만 함수의 존재 여부를 main 함수에 알리는 역할을 한다.
  • 호출부 : 선언한 함수를 호출하는 부분을 말한다.
  • 정의부 : 함수의 동작에 대해 정의하는 역할을 한다.

정의부를 main 함수 위쪽에 선언할 경우 선언부 생략이 가능하지만, C++개발에서는 선언부와 정의부로 따로 나누어서 사용한다고 한다.


main 함수

C++에서 main 함수는 프로그램의 시작 지점(Entry point) 이다.
즉, 운영체제가 프로그램을 실행하면, 내부 준비 과정을 마친 뒤 main 함수를 가장 먼저 호출하게 된다.


Parameter와 Argument

앞서 함수를 선언할 때 입력 값을 받을 수 있고, 이것은 Parameter라고 부른다고 했다.

Parameter와 함께 Argument라는 용어가 사용되는데, 이 두 단어는 함수의 입력 값과 밀접한 관련이 있다.

정의

Parameter(매개변수, 인자) : 프로시저를 호출할 때 전달될 값을 나타낸다.
Argument(인수) : 프로시저를 호출할 때 프로시저 매개변수에 전달하는 값을 나타낸다.

전달될 값, 전달하는 값의 차이로 사실 비슷한 말인것 같다.

간단하게 말하면 Parameter(매개변수, 인자)는 함수를 선언할때 입력받는 값을 정의해 놓는 부분을 말하고, Argument는 함수를 호출할 때 Parameter로 정의한 부분에 넣는 값을 말한다. 즉, Parameter는 변수의 틀로 볼수 있고 Argument는 실제 값으로 볼 수 있다.

예시로 알아보면

	int f(int a, int b) {
    	return 0;
    }
    
    f(1, 2);

에서 선언부의 (int a, int b)부분은 Parameter 라고 부르고 호출부의 (1, 2)부분은 argument라고 부른다.

0개의 댓글