보통 선언과 정의를 혼용해서 많이들 사용한다.


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
Posted by 나무길 :