본문 바로가기

C & C++/C언어

[C] 전역변수와 static 차이

반응형

 

int aaa

1. 이 변수는 외부에서 접근이 가능한 변수이다.

2. 같은 이름의 전역 변수가 있으면 링크에러가 난다.

 

 

static int aaa

1. 현재 소스 파일에서만 접근 가능.

2. 여러 소스에서 같은 이름의 변수가 있어도 링크 에러가 안난다.

즉, 현재 소스파일에서만 사용할 목적으로 만들어진 변수 이다.

 

둘다 데이터 영역

간단히 보면 다른 파일에서의 사용 유무 큰차이

 

aa.c에서 사용한 전역변수를 bb.c에서도 사용 가능

aa.c에서 사용한 Static변수를 bb.c에서는 사용 불가능

 

aa.c 에서 전역변수를 선언하고 bb.c에서 같은 이름의 전역변수 선언 -> 링크 에러

aa.c 에서 Static변수를 선언하고 bb.c에서 같은 이름의 Static변수 선언 -> 사용 가능

반응형