Index
함수 선언과 변수 유효 범위
- Function Definition vs. Function Prototype
- Interface & Implementation
- Variable Scope
- Local Variable vs Global Variable
1.Function Definition vs. Function Prototype
① Function Prototype?
- Function Definition에서 Body 부분을 제거하고 Header 부분만 남긴 형태
- ; (semicolon)을 덧붙임에 유의
- Function Prototype, Funcion Declaration, Function Interface 등의 이름으로 불림
- 함수 호출에 필요한 정보는 모두 알려주지만 함수가 어떻게 구현/실현되는지를 보이지 않음
- 함수를 호출하는 입장에서는 함수가 제공하는 기능을 이해하고 있다면 굳이 함수 Body내용을 알 필요는 없음
- 함수를 호출하기 전에 Function Definition 또는 Prototype 중 하나가 있어야 함
- Function Prototype을 이용하면 함수의 Body를 포함하는 Function Definition을 다른 곳으로 이동시켜 숨길 수 있음
- Function Definition/Implementation의 분리
- C의 경우 변수이든지 함수이든지 모든 식별자는 사용 전에 선언 또는 정의하는 것이 바람직하다
✓ Abstraction
Abstraction is the process of generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose
Separation of Interface of Inplementation
Interface의 이해는 (Modular) Programming의 핵심
- Software 개발의 상당 부분은 Assembly(조립)이다
- 타인이 작성한 모듈과 나의 모듈을 결합시키는 작업
- 응용 프로그램을 짜기 쉽도록 운영체제 또는 플랫폼에서 제공하는 함수/서비스 -> API : Application Programming Interface
- 현실 S/W개발 시 이용할 수 있는 모듈/Library는 거의 100% 설명서가 영어임
2. Interface & Implementation
- 함수(서비스)를 호출하는 입장에서는 함수가 제공하는 기능과 호출하는 방법을 안다면 함수의 세부 내용을 알 필요가 없음 -> Black Box
- C/C++ 언어에서 Header File은 Interface의 역할을 Source File 은 Implementation의 역할을 한다.
3. Variable Scope
✓ 변수의 유효범위 (Scope)
Scope - 어떤 변수를 사용할 수 있는 프로그램 내의 범위
- 유효 범위를 두지 않는다면: 변수 이름의 충돌이 발생할 수 있고 이는 프로그래밍 과정을 매우 복잡하게 만든다
- 변수는 일반적으로 선언이 이뤄진 함수 내에서만 유효하다
4. Local Variable vs Global Variable
✓ 변수 선언 위치와 유효 범위
① 변수 선언 위치는 변수 유효범위 결정에 직접적 영향을 미친다
② C 소스 코드는 함수 내부 영역과 함수 외부 영역으로 영역을 구분할 수 있다
③ 함수 내부 영역에서 선언된 변수의 경우 해당 함수 내에서 유효하며 지역 변수(Local Variable)라고 한다
- 엄밀하게는 변수 선언 위치부터 해당 블록(Block)의 끝까지 범위에서 유효
④ 함수 외부 영역에서 선언된 변수의 경우 해당 소스 파일의 전체 함수에서 유효하며 전역 변수(Global Variable)라고 한다
- 엄밀하게는 변수 선언 위치부터 해당 파일(File)의 끝까지 범위에서 유효
✓ 지역 변수 유효 범위
① 지역 변수의 유효 범위
- 선언된 위치에서부터 해당 블록(Block)의 끝까지 참조 가능
② 중첩 블록(nested block)
- 중첩 블록 안에 선언된 변수는 해당 블록이 끝나는 범위까지 참조 가능하다
③ 매개 변수의 유효 범위
- 매개변수는 해당 함수의 지역 변수로 해당 함수 내에서 참조가능하다
④ 다른 함수나 블록에서 선언된 변수의 경우 이름이 같아도 다른 변수임
✓ 전역 변수 유효 범위
선언된 위치에서부터 파일 끝까지 참조 가능
✓ 변수 충돌 (Variable Collision)
이름이 같은 변수들의 유효 범위가 겹치는 상황
→ 변수 충돌 시 보다 가까운 위치에서 선언된 변수로 해석, 결과적으로 주로 해당 블록 안에서 선언된 지역 변수로 해석됨
✓ 전역 변수의 활용 - 이전 작업 정보의 기억
언제 지역 변수를 사용할까?
① 지역 변수의 한계
- 지역 변수는 함수 내에 선언된 변수로 함수 내부에서만 볼 수 있음
- 지역 변수는 함수가 호출될 때 생성되어 메모리가 할당되고 함수가 종료하면 사라지는 자동 변수임(Automatic Variable)
- 전역 변수는 프로그램 시작 시 생성되고 프로그램 종료 전까지는 유지됨
② 이전 작업 적보의 기억
- 함수의 지역 변수는 함수가 끝나면 사라진다. 하지만, 전역 변수를 사용하면 함수가 끝나도 정보를 저장 할 수 있다.
③ 함수 간 정보 공유
- 함수에게 정보를 전달하는 일반적 방법은 매개 변수를 이용하는 것이다
- 전역 변수는 모든 함수에서 참조 가능하기 때문에 매개 변수를 사용하지 않고 전역 변수를 통해 함수 간 정보 공유가 가능하다
요약
'Language Study > C' 카테고리의 다른 글
[C/C++] 07 - 02 STANDARD LIBRARY 함수의사용 (0) | 2022.11.02 |
---|---|
[C/C++] 07 - 01 함수와변수,함수인자심화학습 (0) | 2022.10.25 |
[C/C++] 04 - 함수 기초 - 함수의 개념과 호출 구조, 재귀 호출 (0) | 2022.10.03 |
[C/C++] 03 - 제어 구조 기초 - 반복문과 배열 기초 (0) | 2022.10.03 |
[C/C++] 03 - 제어 구조 기초 - 제어 구조(Control)와 조건문 기초 (0) | 2022.10.03 |