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 |