본문 바로가기

C++ 기초 1

[C++] 1-3 void 함수 호출 및 쓰는 이유

void 함수

   함수형은 return문에서 반환해 주는 값의 데이터형과 일치해야 한다. 만약 반환값이 없으면 함수형을 void로 지정할 수 있다. void형 함수에서는 반환값이 없으므로 return문을 사용하지 않는다. 하지만 뒤에 식이 생략된 return문을 void형의 함수인 경우 특별히 사용할 수 있다. 또한, void는 함수를 정의할 때 인수가 없다는 의미로도 사용할 수 있다. 인수가 없는 함수를 정의하는 경우, 괄호 안을 비워도 된다. 하지만 괄호 안에 void를 표기하는 것이 좀 더 바람직한 프로그래밍 작성법으로 볼 수 있다.

 

 
예제 1
#include <iostream>
using namespace std;
void xyz(int x);			//함수의 원형 선언

int main()					//main() 함수
{
	xyz(123);				//사용자 정의 함수 xyz 호출
	return 0;				
}

void xyz(int x)				//사용자 정의 함수
{
	cout << x << endl;
}
결과
123
※ xyz() 함수는 return문이 없으므로 숫자를 출력만 하고 프로그램의 제어를 호출 측으로 이동시킨다. 반환값이 없는 경우, 함수형을 void로 지정해야 한다. 

 

예제 2
#include <iostream>
using namespace std;
void sbs(void);			//함수 sbs는 반환값과 인수가 없음을 선언

int main()					//main() 함수
{
	sbs();					//사용자 정의 함수 sbs 호출
	return 0;				
}

void sbs(void)				//인수가 없는 사용자 사용자 정의 함수
{
	cout << "C++ programing!" << endl;
}
결과
C++ programing!
※ 함수 sbs는 반환값이 없으므로 void형 함수이다. 또한 sbs는 인수가 없으므로 괄호 안에 void를 기입한다. 

 

예제 3
#include <iostream>
using namespace std;
void ebs(void);			//함수 ebs는 반환값과 인수가 없음을 선언

int main()					//main() 함수
{
	ebs();					//사용자 정의 함수 ebs 호출
	return 0;				
}

void ebs(void)				//인수가 없는 사용자 사용자 정의 함수
{
	cout << "Pass" << endl;
	return;					//변수가 생략된 return문
	cout << "Fail" << endl;
}
결과
Pass
※ void형 함수 내에서 식이 없는 return문을 만나면 현재의 실행 위치와 관계없이 함수가 마무리된다. return문 아래의 문장을 실행되지 않는다. 
참고

1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13