[C] 함수-Kyeom

2022. 11. 17. 22:18C언어/기본 개념

728x90

함수 기본 구성

  1. 함수명
  2. 매개변수(필요한 데이터)
  3. 반환형(결과 값의 자료형을 적어준)

변환형  함수명(매개변수1, 매개변수2)

{

      함수가 수행하는 명령

}


이때까지 사용해왔던 int main(void) 와 같은 함수이다. printf, scanf도 마찬가지로 '표준라이브러리 함수'라고 한다.

새롭게 함수를 선언 하는 방법은 다음와 같다.

#include <stdio.h>

int main(void)
{
	int a = 10, b = 20;
	int result;

	result = sum(a, b);
	printf("%d", result);
}

int sum(int x, int y)
{
	int temp;

	temp = x + y;

	return temp;
}

main 함수와 별개로 sum 함수를 만들어봤다. 함수 내에서 나온 값을 return해준다.

int sum(int x, int y)

int : 반환형

sum :  함수명

(int x, int y) : 매개변수


함수 상태

상태 설명
함수 선언 int sum(int x, int y); 함수의 형태를 알리고 원형에 세미콜론을 작성한다.
함수 정의 int sum(int x, int y)
{
    return x + y;
}
반환 값의 형태, 이름, 매개변수 표시 후 안에 기능 작성
함수 호출 sum(10, 20) 함수 사용

매개 변수가 없는 함수, 반환값이 없는 함수, 둘 다 없는 함수

◎ 매개변수가 없는 경우

 int sum(int x, int y);  괄호 안에 int x, int y 대신에 void를 작성해주면 된다.

호출 할 때는 void를 작성하지 않고 괄호만 작성하면 된다.

#include <stdio.h>

int get_num(void);

int main(void)
{
	int result;

	result = get_num();
	printf("반환값 : %d\n", result);
	return 0;
}

int get_num(void)
{
	int num;

	printf("양수 입력 : ");
	scanf("%d", &num);
	return num;
}

 

반환값이 없는 경우

반환형 자리에 void를 작성하면 된다. int sum(int x, int y);   int 대신에 void를 작성해주면 된다.

#include <stdio.h>

void print_char(char ch, int count);

int main(void)
{
	print_char('@', 5);

	return 0;
}

void print_char(char ch, int count)
{
	int i;

	for (i = 0; i < count; i++)
	{
		printf("%c", ch);
	}
	return;
}

 반환값과 매개변수 둘 다 없는 경우

매개변수, 반환값 자리에 void를 작성 하면 된다.

#include <stdio.h>

void print_line(void);

int main(void)
{
	print_line();
	printf("반환값과 매개 변수가 없는 함수입니다.\n");
	print_line();
    
    return 0;
}

void print_line(void)
{
	int i;
	for (i = 0; i < 50; i++)
	{
		printf("-");
	}
	printf("\n");
}

 

재귀호출 함수

함수 안에서 자신을 호출한다. 그렇게 되면 함수는 계속 반복 되는 것이다.

하지만 무한 호출은 되지 않는다. 이유는 프로그램 하나당 쓸 수 있는 메모리를 다 사용하게 되면 강제종료를 하기때문이다.

#include <stdio.h>

void fruit(void);

int main(void)
{
	fruit();

	return 0;
}

void fruit(void)
{
	printf("apple\n");
	fruit();
}

 

728x90

'C언어 > 기본 개념' 카테고리의 다른 글

[C] 포인터  (0) 2022.11.21
[C] 배열 - Kyeom  (0) 2022.11.18
[C] 반복문(break, continue) - Kyeom  (0) 2022.11.17
[C] if문 / switch ~ case문  (0) 2022.11.16
[C] 연산자 - kyeom  (0) 2022.11.16