보통 선언과 정의를 혼용해서 많이들 사용한다.
char str = "hello";
이런식으로 쓰고 '변수 str을 선언 또는 정의했다.' 라곤 하지.
하지만 선언과 정의는 다른 것이다. 선언은 변수의 성질을 나타내는 것이고, 정의는 실제로 기억장소가 할당되도록 하는 것이다.
- 선언과 정의가 동시에 된 것.
int sp;
double val[100];
- 선언만 된 것.
extern int sp;
extern double val[100];
이것을 구분하는 이유는 프로젝트의 규모가 커질수록 파일들을 나누어서 작업하는 모듈화를 하게 된다. 이렇게 화일들을 나누다 보면 한 곳에서 정의한 변수를 다른 화일에서도 사용하기 위해 extern (외부변수) 을 사용해서 외부 참조를 붙여준다. 이때 메모리의 낭비를 하지 않으려면 소스 프로그램을 구성하는 화일들에서 사용되는 외부변수는 단 한번의 정의만 있어야한다. 그러므로 한곳에서만 정의를 하고 다른 곳은 선언을 해줌으르써 메모리의 낭비를 막을 수 있다.
'Language > C언어' 카테고리의 다른 글
재귀함수 (0) | 2015.11.02 |
---|---|
C언어의 메모리 구조 (0) | 2015.06.06 |
C언어 따옴표의 의미 (0) | 2013.11.06 |
반복문 for 의 함정 (1) | 2013.10.23 |
강제 형 변환 (0) | 2013.10.23 |