사냥꾼의 IT 노트

C++ 필기 노트 #7 함수 본문

C++

C++ 필기 노트 #7 함수

가면 쓴 사냥꾼 2022. 4. 20. 07:12

1. 함수란? 복잡한 문제를 다시 작은 문제로 나누는, 자주 사용되는 개발 방법론

(다른 프로그래밍 언어에서는 메소드 또는 프로시저라고 부르기도 함)

 

2. 함수의 장점

  • 분할 처리
  • 오류 확인(디버그)
  • 재사용
  • 함수 라이브러리: 잘 쓰여진 함수들이 보관되어 있는 곳

3. 함수의 기본 사용법

  1. 함수 선언: 함수의 헤더와 세미콜론만 조합된 구문 -> 함수의 호출 방법을 나타낼 때 사용
    • 자료형 함수_이름(매개변수_리스트);
  2. 함수 정의: 함수를 만드는 것
    • 리턴_자료형 함수_이름(매개변수 리스트){ 본문 }
  3. 함수 호출: 함수의 내용을 실행하기 위해서 함수를 호출하는 것 (후위 표현식)
  4. argument와 parameter
    • parameter: 함수 정의에 있는 변수 선언
    • argument: 함수를 호출할 때 매개변수를 초기화하는 값

4. 라이브러리 함수: 라이브러리에 함수가 미리 정의되어 있는 것

  • 숫자 함수
  • 삼각 함수
  • 문자 구분 함수
  • 문자 변환 함수
  • 시간 함수: <ctime> 헤더 파일에 정의되어 있는 time 함수로, 유닉스 타임을 리턴함. 즉, 어떤 시간을 기준으로 함수가 호출된 시점까지의 초를 리턴함.
  • 랜덤 숫자 관련 함수

5. 사용자 정의 함수

  • 매개변수가 없는 void 함수: 함수 내부에서 부가 작용을 일으키기 위해서만 사용
  • 매개변수가 있는 void 함수: 매개변수로 값을 전달해서 활용하는 함수 -> 리턴값을 리턴하지 않음
  • 매개변수가 없지만 리턴값이 있는 함수: 리턴값을 목적으로 사용하는 함수로, 일반적으로 함수 내부에서 입력을 받고 이를 리턴함
  • 매개변수와 리턴값이 있는 함수

5. 자료 교환

  • 값으로 전달(pass-by-value): 인수의 값이 복사되어서 매개변수에 할당 -> 호출되는 함수 쪽에서 인수를 변경하지 않게 만들고 싶을 때 사용 => 읽기 전용 접근
  • 참조로 전달(pass-by-reference): 인수와 매개변수는 메모리 위치를 공유함 => 읽고 쓸 수 있는 접근
  • 포인터로 전달(pass-by-pointer): 인수로 메모리 주소를 매개변수에 전달하는 것 -> 인수의 메모리 위치에 접근 가능

6. 자료 리턴

  • 값으로 리턴(return-by-value): 호출되는 함수 쪽에서 어떤 표현식을 생성하고, 이를 리턴함
  • 참조로 리턴(return-by-reference): 복사로 인해서 발생하는 비용을 줄이기 위해 사용
  • 포인터로 리턴(return-by-pointer)

7. 기본 매개변수

기본 매개변수를 사용해서 변수에 기본값을 지정할 수 있음 -> 오른쪽에 위치하는 매개변수들에만 적용 가능

 

8. 함수 오버로딩

이름이 같은 함수를 함수 시그니쳐만 다르게 해 2개 정의하는 것

  • 함수 시그니처: 함수들을 구분하기 위해 사용하는 기준으로, 매개변수의 자료형, 개수, 순서를 통칭함

9. 스코프

소스 코드 내부에서 어던 엔티티를 사용할 수 있는 범위

  • 지역 스코프: 선언된 위치부터 블록이 끝나는 부분(닫는 중괄호) 내부에서 사용
  • 전역 스코프: 모든 함수의 외부에 선언된 엔티티 => 범위 해결 연산자: ::
  • 셰도잉(shadowing)
  • 함수 이름, 매개변수의 스코프

10. 수명

  • 자동 지역 변수: 함수가 호출될 때 생성되고 함수가 종료될 때 소멸 => 초기화하지 않으면 메모리에 남아있는 쓰레기 값을 가지게 됨
  • 정적 지역 변수: static 변경자를 앞에 붙여서 만듬. 처음 호출할 때 초기화되며, 이후에는 초기화되지 않고 프로그램이 종료되기 전까지 유지됨 => 초기화 하지 않으면 기본값으로 초기화됨
  • 초기화