C언어 함수의 매개변수와 반환문에 따른 4가지 분류

C언어에서 매개변수는 main()에서 함수로 전달되는 데이터를 말합니다. 반환문이란 함수에서 main() 함수로 돌아가는 데이터를 말합니다.반환문이 없는 함수는 void 자료형을 사용합니다. 매개변수가 없는 함수는 공백 () 또는 (void)를 삽입합니다.

C언어 함수의 매개변수와 반환문

C언어의 함수 header 부분에는 반환자료형과 매개변수가 삽입됩니다.

반환자료형 함수명 (매개변수 1, 매개변수 2)
{
  ... .. ...
}

반환자료형이 int와 같은 자료형일 경우 return 문이 삽입됩니다. 하지만 void일 경우 삽입되지 않습니다. 또한 매개변수가 있는 경우가 없는 경우가 있습니다. 매개변수가 없을 경우 괄호를 공백 () 으로 유지하거나 (void) 값을 삽입합니다.

반환자료형 매개변수 반환자료형 기입 return문
x x void x
x o void x
o x int, char, float, double o
o o int, char, float, double o

C언어 함수 매개변수 X 반환문 X

매개변수가 없다는 말은 main () 함수 영역으로 부터 입력받을 데이터가 없다는 의미입니다. 반환문이 없다는 뜻은 사용자 정의 함수에서 main() 함수로 돌려줄 값이 없다는 의미입니다.

return 문이 필요없을 경우 자료형을 void로 작성합니다. void JustNumber(void) 형태도 가능합니다.

#include <stdio.h>
//사용자 정의 함수 선언
void JustNumber();

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

//사용자 정의 함수
void JustNumber()
{
	int i;
	printf("정수를 입력하세요. \n");
	scanf("%d", &i);

	printf("입력한 숫자는 %d 입니다. \n", i);
}

결과

정수를 입력하세요.
3
입력한 숫자는 3 입니다.

C언어 함수 매개변수 X 반환문 O

함수의 연산결과에 정수와 같은 숫자를 main() 함수에 돌려주고 싶은 경우 자료형은 int등으로 변경하고 return 문에 반환값을 작성해야 합니다. return 문에는 원하는 연산을 작성할 수 있습니다. void JustNumber(void) 형태도 가능합니다.

#include <stdio.h>
//사용자 정의 함수 선언
int JustNumber();

//main () 영역
int main()
{
	int result;
	result = JustNumber(); //사용자 정의 함수에서 반환받은 값을 result에 저장
	printf("입력한 숫자는 %d 입니다.", result);
	return 0;
}

//사용자 정의 함수
int JustNumber()
{
	int i;
	printf("정수를 입력하세요. \n");
	scanf("%d", &i);

	return i; //변수 i에 삽입된 변수값을 main () 함수로 반환합니다.
}

결과

정수를 입력하세요.
3
입력한 숫자는 3 입니다.

C언어 함수 매개변수 O 반환문 X

매개변수가 있는 경우 main() 함수로 부터 변수값을 전달받을 수 있습니다. 반환문이 없는 경우 void 자료형을 쓰고 return을 삽입하지 않습니다.

#include <stdio.h>
//사용자 정의 함수 선언
void JustNumber(int i);

//main () 영역
int main()
{
	int result;
	printf("정수를 입력하세요. \n");
	scanf("%d", &result);

	JustNumber(result); //변수 result를 사용자 정의 함수에 전달해서 다시 반환

	return 0;
}

//사용자 정의 함수
void JustNumber(int i) //전달받은 변수 result를 매개변수 i에 대입
{
	printf("입력한 숫자는 %d 입니다. \n", i); //main()으로 반환하지 않고 바로 출력
}

결과

정수를 입력하세요.
3
입력한 숫자는 3 입니다.

C언어 매개변수 O 반환문 O

매개변수가 있으면 사용자 정의 함수로 데이터가 전달됩니다. 또한 반환문이 있으면 함수에서 생산된 데이터가 return 문을 통해서 main() 함수로 다시 돌아옵니다.

#include <stdio.h>
//사용자 정의 함수 선언
int JustNumber(int i);

//main () 영역
int main()
{
	int result;
	printf("정수를 입력하세요. \n");
	scanf("%d", &result);

	JustNumber(result); //변수 result를 사용자 정의 함수에 전달해서 다시 반환

	printf("입력한 숫자는 %d 입니다.", result); //반환된 result의 변수값을 출력

	return 0;
}

//사용자 정의 함수
int JustNumber(int i) //전달받은 변수 result를 매개변수 i에 대입
{
	return i; //매개변수 i의 값을 main() 함수에 반환
}

결과

정수를 입력하세요.
3
입력한 숫자는 3 입니다.

함수 호출시 괄호안에 작성한 인수가 함수의 매개변수에 대입되고, 사용자 정의 함수에서 연산 결과인 i가 return에 의해서 다시 함수 호출부로 돌아가는 모습입니다.