C++

함수

Hufs.Woong 2024. 6. 22. 16:13

함수란?

특정 작업을 수행하는 코드 블록이다. 이렇게만 설명하면 이해가 잘 안되기 때문에 그림으로 설명하려고 한다.

우리는 절대값을 얻기위해 abs라는 함수를 사용한다. 아무생각없이 abs()라는 문구를 쓰기만 한다면 절대값을 나타내준다고 생각하겠지만, abs라는 함수가 시스템 내에서 이미 만들어져 있어서 abs(x)라는 명령만 주면 절대값을 쉽게 구할 수 있었던 것이다.

 

물론 우리가 직접 함수를 만들어서 쓰는 방법도 있다.

x와y중에 더 큰 값을 나타내주는 max라는 함수를 직접 만들어서 사용한 예시이다. 맨 처음 네모칸의 int는 반환형을 나타낸다. 이 함수는 int형을 return한다고 선언한다 라고 말하고 있다.

int x, int y는 매개변수이다. 이 것은 함수가 입력으로 받는 변수들의 타입과 이름을 정의한다. max라는 함수는 2개의 변수를 입력으로 받는데, x와y로 입력을 받아서 함수 내에서 사용하겠다고 말하고 있다. 

 

 

위에서 봤던 max함수를 구제척으로 사용하는 예시이다. 여기서 주의깊게 봐야할 점은 main문에서 매개변수를 어떻게 max함수로 전달하는지를 보면된다. max(2,3)은 max로 2개의 매개변수를 전달한다는 명령어이다. max에서는 2와 3을 차례대로 x와 y에 넣을 것이고, max함수는 받은 x와 y 변수를 사용하여 동작할 것이다. 

 

함수 호출 시 인수 전달 방법은 2가지(call-by-value, call-by reference)가 있다.

먼저 call-by-value는 호출하는 곳에서 인수를 전달할 때 인수의 값이 매개 변수로 복사되는 방법이다.

 

위의 max함수가 call-by-value방식으로 값을 전달한 예시이다. main문에서 max함수를 호출할 때 매개변수 2와 3은 값 자체가 복사가되어서 max 안에 있는 x와y 변수 안으로 값이 들어간다.

 

call-by-reference는 원본 인수가 함수에 전달되는 방법이다. 

 

x와y의 값을 2배씩 늘려주는 modify 함수에 call-by-reference방식으로 값을 전달한 예시이다.  call-by-reference 방식을 사용할 때 참조 연산자 &를 사용한다. 참조 연산자(&)는 참조를 선언하거나 변수의 주소를 얻기 위해 사용되는 연산자이다. 즉 modify 함수는 매개변수로 받은 a와b의 주소를 받아서 직접 값을 수정하는 방식이다.