C언어/참고서: C언어 콘서트

C언어 38차시 함수, 함수헤더, 파라미터, parameter, 함수몸체, 함수호출, call, argument

Olivia-BlackCherry 2023. 4. 4. 16:37

목차

    1. 함수란? function 

    - 특정한 코드를 모아놓은 묶음에 이름을 붙인 것이다. 

    - 장점: 재활용, 유지 관리의 효율성, 가독성

    함수를 사용하면 필요할 때마다 호출해서 쓸 수 있으므로 불필요한 반복을 줄일 수 있다.

    또한 여러 함수를 조립하여 손쉽게 프로그램을 만들 수 있다.

    - 다른 언어에서는 procedure이라고도 불린다.

    - 일반적으로 함수 정의문은 반환형, 함수 이름, 파라미터의 자료형, 함수 몸체{}가 포함되어야 한다.

     

    2. 함수 만드는 방법

    (1) 함수 헤더 function header

    1) 반환형 

    - 함수가 실행되면 return 뒤의 값이 반환되는데, 이 값의 데이터 유형을 선언한다.

    - 데이터의 유형은 char, int, long, double 등이다.

    - 반환하는 값이 없다면 void라고 표시한다.

    int

     

    2) 함수이름

    - 함수의 기능을 암시하는 이름이라면 더 좋다. 

    - 동사 또는 동사+명사를 조합한다.

    int add

     

    3) parameter

    - 매개변수라고도 불린다.

    - 함수가 받는 데이터를 함수에게 전달해주는 '변수'이다.

    - 데이터 유형을 선언한다.

    - 각각의 매개변수는 쉼표로 분리된다.

    - 매개변수가 없어도 된다.

    int add(int x, int y)

     

    (2) 함수 몸체 { }

    - { } 중괄호로 둘러싸여 있다. 

    - 함수가 수행하는 작업에 필요한 문장이 들어간다. 

    - 순차적으로 실행된다. 

    - return 문장을 만나면 함수 실행이 종료되고, 해당 함수가 호출된 곳으로 돌아간다.

    - return 다음 문장은 ( )로 둘러싸여도 되고, ()가 없어도 된다.

    int add(int x, int y)
    {
        return x+y;
    }

     

    3. 함수 만들기 연습문제

    <정수값 구하기>

    - 반환값: int

    - 함수이름: get_integer

    - 매개변수: 없음

    int get_integer() 
    {
    	int value;
    	printf("값을 입력하세요");
    	scanf("%d", &value);
    	return value;
    }

     

    <최대값 구하기>

    - 반환값: int

    - 함수이름: get_max

    - 매개변수: int형 두 개

    int get_max(int x, int y){
    	if (x > y) return x;
    	else return y;
    }

     

    <x의 y거듭제곱 구하기>

    - 반환값: int

    - 함수이름: cal_pow

    - 매개변수: int형 두 개

    int cal_pow(int x, int y) {
    	int value;
    	value = pow(x, y);
    	return value;
    }

     

     

    4. 함수 호출하기

    - call이라고 부른다.

    1) argument 인수

    - 함수의 이름을 쓰고, argument를 적은 후, 세미콜론을 붙인다. 

    - argument 인수는 함수에 실제로 전달되는 값이다. 

    - argument와 parameter 개수는 동일한다. 

     

    2) return value 반환값

    - 반환값이 없으면 return 키워드 다음에 아무것도 쓰지 않거나,  return조차 쓰지 않는 방법이 있다.

     

    int main(void) {
    	int x, y;
    	x = get_integer();
    	y = get_integer();
    
    	// 두 수의 합
    	printf("두 수의 합: %d\n", x+y);
    	// 최대값
    	printf("최대값: %d\n", get_max(x, y));
    	// x의 y승
    	printf("x의 y승: %d\n", cal_pow(x, y));
    
    	return;
    }