본문 바로가기
C++/이론

[C++] 함수(1)

by 씐 2024. 9. 20.
728x90

함수

 

함수란?

  • 특정 기능(function)을 처리하기 위한 명령을 묶어 놓은 작은 프로그램 단위
  • 특정한 기능을 수행하고 그 결과로 어떤 값을 반환
  • 기능 단위로 모듈화해서 데이터가 주어지면 이를 가공해서 원하는 결과를 얻을 수 있도록 해줌

 

함수의 필요성

  • 불필요하게 코드를 길게 작성하지 않아도 되고, 소스코드가 중복되지 않아 프로그램을 간결하게 작성할 수 있음.
    • 프로그램 실행 중에 함수명과 동일한 부분을 만나면 해당 함수로 분기해서 함수를 실행하고 함수 실행을 마치면 다시 main함수로 되돌아옴.
  • 프로그램에서 자주 사용되는 코드 블록을 기능 단위로 따로 한 번만 만들어 두고 필요할 때마다 호출해서 그 기능을 처리할 수 있음.

 

라이브러리 함수와 사용자 정의 함수

  • 라이브러리 함수 : 컴파일러를 제작한 곳에서 미리 만들어 제공하는 함수. 이미 정의되어 있으므로 가져다 사용만 하면 된다. 주의할 점은 각 함수마다 특정 헤더파일을 포함(include)한 후에 사용해야 한다는 것.
  • 사용자 정의 함수 : 프로그램을 작성하는 사용자가 필요에 따라 스스로 만들어 사용하는 함수

 

함수를 사용할 때의 장점

  • 반복적으로 실행해야 할 내용을 함수로 만들어 두고 필요할 때마다 호출해서 사용
  • 프로그램이 모듈화(블록화)되므로 읽기 쉽고, 디버그와 편집이 쉽다.
  • 프로그램의 기능과 구조를 한 눈에 알아보기 쉽다.
  • 다른 프로그램에서 다시 사용할 수 있다.

함수의 정의와 호출

 

함수의 3가지 요소

함수를 사용할 때는 다음 3가지가 반드시 존재해야 한다.

  • 함수의 정의 : 함수에 어떤 내용을 담고 어떻게 동작할 것인지를 기술하는 함수의 정의가 있어야 한다.
  • 함수의 호출 : 정의한 함수는 호출하지 않으면 실행되지 않으므로 필요한 곳에서 함수를 호출해야 한다.
  • 함수의 선언 : 함수의 정의가 나타나기 이전에 함수가 호출되었다면 함수를 반드시 선언(원형 정의)한 후에 호출할 수 있다.

 

함수의 기본 형식

함수 기본 형식 함수 사용 예
자료형 함수명(매개변수 리스트)
{
     변수 선언;
     문장;
     return 결과값;
}
int sum(int x, int y)
{
     int add;
     add = x+y;
     return add;
}
  • 자료형 : 함수가 호출한 곳에 지정된 반환값의 자료형을 알려준다.
    • 반환값이 없으면 void형
    • 반환값이 있을 경우 return 다음에 적은 결과값과 동일한 자료형으로 선언
    • return 다음에 적은 결과값의 자료형에 의해서 함수명 앞에 기술하는 자료형도 결정
  • 함수명
    • 식별자 작성 규칙과 동일하게 작성.
    • 가급적 함수명만 보고도 이것이 무슨 기능을 수행하는 함수인지 알 수 있도록 의미있게 명명
  • 매개변수 리스트
    • 함수의 입력으로 어떤 매개변수(인자)가 들어오는지를 나타냄.
    • 아무 것도 들어오지 않을 수 있다.

 

사용자 정의 함수와 main 함수의 다른점

  • main 함수명은 반드시 main이어야 하지만 사용자 정의 함수에서 함수명은 변수명을 만드는 규칙에 준수해서 만들어 준다.
  • main 함수는 프로그램이 실행되면서 자동으로 수행되지만 사용자 정의 함수는 프로그래머가 명시적으로 함수를 호출해야 한다.

 

함수의 호출

// 매개변수도 반환값도 없는 함수 호출하기
#include <iostream>
using namespace std;
void show()
{
    cout << "**************\n";
    return;
}
void main()
{
    cout << "함수 호출하기 전\n";
    show(); // 함수의 호출 : 매개변수가 없으므로 ()안은 비어있음
    cout << "함수 호출한 후\n";
}

  • 사용자 정의함수를 main 함수에 show(); 로 기술함으로써 호출
  • 함수는 한 번만 정의하고 이 함수를 필요할 때마다 여러 번 호출할 수 있으므로 코드의 양을 줄일 수 있다.
  • 반면에 함수를 호출하지 않고 정의만 해두면 사용자 정의 함수에 기술한 내용은 절대 수행 되지 않는다.

본 게시물은 "C++ 하이킹 객체지향과 만나는 여행"을 기준으로 작성함을 알립니다.

'C++ > 이론' 카테고리의 다른 글

[C++] 기억클래스와 변수  (0) 2024.09.24
[C++] 함수(2)  (0) 2024.09.24
[C++] 무한 루프 (for문, while문, goto문)  (0) 2023.10.01
[C++] 보조 제어문 (break문, continue문)  (0) 2023.09.30
[C++] 반복문 (for문, while문)  (0) 2023.09.29