C++ 언어의 함수는 크게 반환값이 있는 함수와 반환값이 없는 함수 두 가지로 나눌 수 있다. 반환값이 있는 함수는 함수가 호출(call)이 되어 뭔가 작업을 거친 후 호출한 위치로 그 기능을 수행한 결과 값을 다시 보낸다. 반환값이 없는 함수는 단순히 어떤 기능만 수행한다는 것을 의미한다.
예를 들어서 두 개의 입력 값을 받아서 더한 값을 돌려 주는 기능을 하는 함수를 생각해 보자. 이 때 입력되는 값은 ‘인자’(argument) 혹은 ‘매개변수’(parameter)라고 부른다. (이후에는 ‘인자’ 라는 명칭만을 사용할 것이다.) 계산 결과값(이 경우 더한 값)을 호출한 곳으로 되돌려주는 경우 이것을 ‘반환값’, ‘리턴값’이라고 한다.
- 인자(argument) - 함수로 넘겨주는 데이터
- 반환값(return value) - 함수가 작업이 끝나고 넘겨주는 결과값
사용자 정의 함수는 문자 그대로 ‘사용자가 필요에 의해서 만드는 함수’를 의미한다. C++ 프로그램에서 함수를 사용하기 전에 반드시 정의를 해 주어야 한다. 함수의 정의 형식은 다음과 같다.
반환자료형 함수명(데이터형 인수1, 데이터형 인수2 ...) {함수 본체} |
예를 들면 다음과 같다.
void sayHi() {printf("Hi ");printf("all.");} |
이 함수의 이름은 sayHi()이다. 함수명 앞에는 이 함수의 반환 값의 데이터 형을 명시한다. 반환값이 없는 경우에는 명시적으로 void라는 키워드를 써야 한다. 이 함수는 인자가 없다. 이렇게 인자가 없는 경우 함수명 뒤에 그냥 빈 괄호를 입력한다. 괄호를 생략할 수 없음에 유의하자.
이렇게 정의된 함수는 다음과 같이 호출할 수 있다.
int main() {...sayHi(); // sayHi()함수 호출...} |
이것을 합하여 완전한 프로그램으로 만들면 다음과 같다.
#include <stdio.h>void sayHi(){printf("Hi ");printf("all.");}int main(int argc, char **argv){sayHi();} |
Hi all. |
이 프로그램을 보면 sayHi() 함수와 main() 두 개의 함수가 있다. 이 예제가 실행될 때는 항상 main()함수를 실행시키며 main()함수가 종료되면 프로그램도 종료된다. C++ 언어는 항상 main()함수를 제일 먼저 실행시킨다.
또 다른 함수의 예를 들어보자.
void sayHello(int in){for(;in>0;in--) {printf(“Hello.\n”);}} |
이 함수는 반환값이 없으며 인자를 하나 받는 함수이다. 그렇게 받은 인자의 개수만큼 “Hello.”를 반복해서 출력하는 일을 한다. 이것으로 완전한 프로그램을 만들어 보면 다음과 같다.
#include <stdio.h>void sayHello(int in){for(;in>0; in--){printf("Hello. ");}}int main(int argc, char **argv){sayHello(3);int ia = 5;sayHello(ia);} |
Hello. Hello. Hello.Hello. Hello. Hello. Hello. Hello. |
main()함수 내에서 sayHello()함수를 두 번 호출했다. sayHello(3)이라고 호출하면 3이라는 정수형 값이 sayHello(int in) 의 인자 in에 저장된 후 함수가 수행된다. 따라서 “Hello.”라는 문자열이 3번 출력된 것이다. 마찬가지로 두 번째 호출인 sayHello(ia) 는 ia의 값은 5를 이 함수의 인자 in에 전달한다. 그러므로 “Hello.”가 다섯 번 출력 된다.
다른 예로 이번에는 반환값이 있는 함수를 들어보자.
float add(float fa, float fb) {float fc = fa + fb;return fc;} |
이 함수는 반환값의 자료형이 float형이라고 함수명 앞에 명시되어 있다. 인자(argument)는 두 개이고(fa, fb) 모두 float 형이다. 함수 본체에 보면 변수 fc에 두 인자의 합을 저장한 후 return 명령어를 이용하여 그 값을 반환하고 있다. 따라서 이 함수는 두 실수를 받아서 그 합을 반환하는 함수이다.
이와 같이 반환값이 있는 함수의 경우 호출부에서는 그 반환값을 변수에 저장할 수 있다. 예를 들어 다음과 같다.
float fr;fr = add(1.0f, 2.5f);//fr에 3.5 저장float fa = 10.1f, fb = 22.3f;float fc = add(fa, fb);// fc에 32.3이 저장됨 |
이와 같이 반환값이 있는 함수의 경우는 호출부에서 그 반환값을 받아서 변수에 저장할 수 있다.
#include <stdio.h>float add(float fa, float fb) {float fc = fa + fb;return fc;}int main(int argc, char **argv) {float fr;fr = add(1.0f, 2.5f);float fa = 12.3f, fb = 45.6f;float fc = add(fa, fb);printf("fr = %f, fc = %f", fr, fc);} |
fa = 3.500000, fb = 57.899998 |
좀 더 다양한 함수의 정의 예를 다음 표에 들었다.
함수 정의 예
|
의미
|
void nop() {... }
|
반환값이 없음을 명시적으로 나타냄
|
int sub(int ia, int ib) {...}
|
두 개의 int형 입력, 반환값도 int형
|
double round(double dx) {...}
|
하나의 double형입력, 출력도 double형
|
void myDate(void) {... }
|
인자가 없음을 명시적으로 나타냄.
|
char display(char ca) {...}
|
하나의 char형입력, 출력도 char형
|
여기에서는 함수의 기본적인 정의 방법에 대해서 살펴 보았다.
C++ 강좌 전체 목록 >>>
댓글 없음:
댓글 쓰기