C언어

함수

khon98 2020. 12. 4. 11:59

함수

1.

- 함수는 입력을 받아 처리한 뒤에 출력하는 구조를 가짐

 

입력 > 함수 > 출력

 

2.

- 함수는 특정한 기능에 대한 소스코드가 반복되는 것을 줄이도록 해줌

 

반환 자료형 함수명(매개변수) {

            // 수행될 명령어

            return 반환할 값;

}

 

3.

- 함수에서 매개변수와 반환할 값은 경우에 따라서 없을 수 있음

- 매개변수 및 반환할 값이 없을 때의 자료형은 void

 

반환 자료형 함수명(매개변수) {

           // 수행될 명령어

           return 반환할 값;

}

 

* 매개변수와 return 반환할 값은 없어도 되는 코드

 

* 말머리 붙이기

#include<stdio.h>
#include<cstdlib>

void dice(int input) {
	printf("khon이 던진 주사위: %d\n", input);
}

int main(void) {
	dice(3);
	dice(5);
	dice(1);
	system("pause");
	return 0;
}

 

* 더하기 함수 만들기

#include<stdio.h>
#include<cstdlib>

int add(int a, int b) { // 매개변수
	return a + b;
}

int main(void){
	printf("%d\n", add(10, 20));
	printf("%d\n", add(50, -20));
	printf("%d\n", add(70, 105));
	system("pause");
	return 0;
}

 

* 사칙연산 함수 만들기

#include<stdio.h>
#include<cstdlib>

void calculator(int a, int b) {
	printf("%d + %d = %d\n", a, b, a + b);
	printf("%d - %d = %d\n", a, b, a - b);
	printf("%d * %d = %d\n", a, b, a * b);
	printf("%d / %d = %d\n", a, b, a / b);
	printf("\n"); // 줄 바꿈
}

int main(void) {
	// 연산한걸 출력
	calculator(10, 3); 
	calculator(15, 2);
	calculator(18, 4); 
	system("pause");
	return 0;
}

------------------------------

 

재귀 함수

- 재귀 함수란 자기 자신을 포함하는 함수

- 기본적으로 자기 자신을 계속 불러냄

- 따라서 반드시 재귀 종료 조건이 필요함

 

* 재귀 함수를 이용한 팩토리얼

팩토리얼

- 자기 자신까지 모든 숫자를 곱한 결과

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>

// 5! = 1 * 2 * 3 * 4 * 5 = 120
int factorial(int a) {
	if (a == 1) return 1; // a가 1일때 return 1을 해줌으로 무한 반복이 되지 않도록 막아줌
	else return a * factorial(a - 1); // a가 1이 아니라면 a를 곱하고 팩토리얼에 a - 1을 매개변수로 넣어줌
}

int main(void) {
	int n;
	printf("n 팩토리얼을 계산합니다. ");
	scanf("%d", &n);
	printf("%d\n", factorial(n));
	system("pause");
	return 0;
}

------------------------------

 

- C언어는 함수로 시작해서 함수로 끝나는 언어

- 재귀 함수는 반복적으로 자기 자신을 불러내므로 경우에 따라서 연산 횟수가 급격히 증가할 수 있음(무한루프 조심)