반응형
C와 JAVA에는 둘다 static이 있습니다.
하지만 같은듯 하면서도 둘은 언어에 따라 완전 다른 역할을 합니다.
C에서의 static!!
C에서는 static을 선언하면, 선언한 함수나 선언한 C파일(*.C)에서만 사용가능하며,
초기화는 처음 컴파일할때만 하게 됩니다.
즉, 정적이면서도, 지역변수가 되는 거지요.
예를 들어 아래의 함수가 있다고 한다면
- void ex(void)
- {
- int a=0;
- static int b=0;
- a++;
- b++;
- printf("a=%d b=%d\n",a,b);
- }
- int main(void)
- {
- while(1)
- {
- ex();
- }
- }
a의 값은 계속해서 0으로 출력이 되지만, b의 값은 점점 증가할 것입니다.
또한 main에서는 저 b라는 변수에 접근을 할 수가 없습니다.
아래와 같이 전역에서 static으로 선언해야 같은 소스파일 내에서는 서로 접근 가능합니다.
- static int b=0;
- void ex(void)
- {
- int a=0;
- a++;
- b++;
- printf("a=%d b=%d\n",a,b);
- }
- int main(void)
- {
- while(1)
- {
- ex();
- printf("again show b=%d\n",b);
- }
- }
하지만 다른 소스파일에서는 접근이 불가능하죠!!
다른 소스파일에서 접근하려면, static이 아닌 header파일에서 extern으로 선언해야 합니다.
이제 JAVA로 넘어오면, static은 좀 다른의미로 쓰입니다.
C와 JAVA 모두 static을 정적메모리에 올리는 건 같지만, JAVA에서는 extern의 의미도 포함합니다.
즉, JAVA에서는 한 소스파일에서 static으로 선언을 하면, 또다른 소스파일에서 접근이 가능합니다.
반응형
'Study > ETC & TIP' 카테고리의 다른 글
windows 10 upgrade 실패 (1) | 2015.07.29 |
---|---|
windows 10 업그레이드 (0) | 2015.07.28 |
Wire Shark (network mornitoring) (1) | 2015.07.17 |
PPA (0) | 2015.02.12 |
Admob google play 버전 (0) | 2015.02.12 |