Language Study/C

[C/C++] 04 - 함수 기초 - 함수의 개념과 호출 구조, 재귀 호출

지미닝 2022. 10. 3. 02:36

Index


함수의 개념과 호출 구조, 재귀 호출

  1. 함수의 개념
  2. Function Definition
  3. void Function / Procedure
  4. Function Call Structure : Call Number / Call Depth
  5. Recursive Call

1. 함수의 개념

✓ 함수(Function)?

  • 함수: 상자 수; 상자에 수를 넣으면 수가 나옴
  • 입력 값을 넣으면 출력값이 나오는 (Black) Box

✓ C 언어와 함수

  • C 언어는 크고 복잡한 일을 여러 개의 함수로 나눠 해결하는 것을 핵심 프로그램 원리로 한다
  • 함수는 C 소스 코드의 핵심 구성 요소이며 소스 코드 규모와 관련 없이 하나 이상의 함수 정의(Funciton)으로 구성된다

2. Function Definition

  • Header와 Body로 구성

  • Header
    • 함수가 반환하는 값의 Type
    • 함수 의 이름/식별자
    • 함수 호출에 필요한 인자/매개변수 목록

✓ Return 문과 Return Type

  • 형식: return expression;
  • 함수가 어떤 값을 돌려주는지 명시함
  • 리턴 값(return value)은 수식으로 주어지는데 수식에 괄호를 사용하면 이해하기 쉽다.
  • 리턴 값의 자료형은 리턴 타입(return type)과 일치해야 한다


Function Call

 함수 호출(Function Call)

  • "함수 이름(매개 변수 수 만큼의 , 로 구분된 입력 값)"

 함수 호출 시 ( )안의 변수 또는 expression 값이 매개변수로 복사 됨

  • 변수 자체가 함수로 전달되는 것이 아님
  • 참고) 이런 함수 호출 방식을 "Call by Value"라고 하며 C언어의 중요한 특징
    • Call by Reference와 구별
  • 함수 내에서 매개변수의 값이 변하더라도 함수 호출 시 사용한 변수에는 변화가 없음


3. void Function / Procedure

✓ 함수의 형태

Return 값이 없는 함수도 있다

  • Return Type로 void를 쓴다
  • void function 또는 procedure라고 부른다
  • 결과 값 없이 함수 내에서 이뤄지는 부가적 효과 (Side Effect) 만을 이용하여 작업을 수행
    • 부가적인 효과의 예: 값의 출력;
  • return 문이 없거나 인자 없이 return을 쓴다
    • return문이 없으면 함수 Body의 끝에 도착하면 return 한다

인자가 없는 함수도 있다

  • 함수 정의 시 매개변수란에 void를 쓴다
  • 함수 호출 시에는 빈괄호를 사용하면 된다
  • int main(void)에서 void는 인자가 없는 함수를 의미한다

✓ 함수에서 다양한 반환 값 처리


4. Function Call Structure : Call Number / Call Depth

✓ 함수의 호출 구조 - 단일 호출

① 기본적인 방식

  • 호출자 함수 A는 함수 B를 호출하면 수행을 멈춘다
  • 호출된 함수 B는
    1. return 문을 만나거나
    2. 함수 몸체 끝에 도달할 때까지 수행한다
  • 호출된 함수 B의 수행이 끝나면 호출 지점 바로 다음으로 복귀하여 호출자 함수 A의 수행을 재개한다

② 복귀 지점

  • 복귀 지점은 문장 단위가 아닐 수 있다

③ 호출 구조 분석

  • Call Depth: 함수 호출 깊이
  • Call Number: 함수의 호출 번호(순서)


✓ 함수의 호출 구조 - 함수 내 함수 호출


✓ 함수의 호출 구조 - 연속 호출


5. Recursive Call

  • Recursive call (재귀 호출)
    • 어떤 함수가 종료되지 않은 상황에서 자신을 다시 호출하는 것
  • Recursive function (재귀 함수): Recursive call을 이용하는 함수

✓ Recursive Funcion 예



요약