C <13>. 변수의 범위

C 2012.04.05 12:30

오늘의 주제

1. 변수의 범위 


열 세번째 시간입니다.^^

지난 번에는 함수에 대해 알아보았어요~
함수... 중요합니다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
내가 안중요하다고 하는거 있었나..ㅋㅋㅋㅋㅋㅋㅋ
그말인 즉슨 알짜배기 열심히 적고있다는 얘기겠지요?ㅋㅋ

자 그럼 서론 생략하고 변수의 범위에 대해 알아봅시다~
스따뚜~~~~~~~~~~~~


# 변수의 범위

그전에 변수란...?
이미 예전에 포스팅 했지요?ㅎㅎ
잘 기억이 안나신다면...ㅋㅋ
보고옵시다~
2011/12/02 - [C] - C <3>. 변수. Variable

자. 변수에도 범위가 있나요??

오홍 그럼요~

어디서든지 쓸 수 있는녀석, 어떤 곳에서만 쓸 수 있는 녀석 등등 변수가 미치는 범위는 다양하답니다~
변수 뿐만 아니라 함수도 마찬가지예요~^^
그럼 자세히 알아봅시다~

일단 변수에는, 어떤 영역 안에서만 사용 가능한 변수, 한 코드파일 안에서 사용 가능한 변수, 다른 파일에서도 사용 가능한 변수... 등등 이렇게 여러가지가 있어요~

몇몇 변수들은 변수 앞에 붙는 키워드에 따라 분류할 수 있습니다.

extern, static 등등 이런 키워드 들이예요~

자, 아래 설명을 봅시다.

전역변수 (Global 변수) : 어떠한 한 코드 파일 내에서 어디서든지 사용 가능한 변수를 말합니다.
지역변수 (Local 변수) : 어떠한 한 구문 또는 함수 내에서만 사용 가능한 변수를 말합니다.
외부변수 (Extern 변수) : 다른 코드 파일에서도 사용 가능한 변수를 말합니다.
정적변수 (Static 변수) : 한 번 선언이 되면 변수가 사용 가능한 영역을 벗어나도 메모리에 기억되어 사라지지 않는 변수를 말합니다. 

자, 이렇게만 말하니까 이해가 잘 안가시죠?

직접 실습해 봅시다~

일단은 지난번에 생성한 VarAndFunc.h 파일로 갑니다.

네모 박스처럼 이쁘게 코딩 해 줍니다~


자, 그럼 이제 FuncExample.h로 가서 VarAndFunc.h에서 선언했던 녀석들을 한 번 불러와 볼게요~
extern 이라는 녀석이 외부 변수를 뜻하는 겁니다.


보시다시피, extern 키워드를 써서 다른 코드파일(VarAndFunc.h)에서 변수와 함수를 가져오는 것을 볼 수 있죠?
이렇게 하면 다른 파일에 선언된 변수를 가져와서 쓸 수 있습니다. 
main함수에서도 새로 몇 줄 추가를 합니다. 


이렇게 추가를 해주고, 우리가 만들어 주었던 myFirstFunction 함수로 와서 static(정적)변수를 선언해 줍니다.
이녀석은 함수가 끝나고 메모리에서 지워지지 않습니다.
무슨말이냐 하면... 우리가 흔히 사용하던 int 변수는 함수가 끝나면 초기화가 되고 함수를 다시 시작하여 선언하면 다시 생성됩니다.
이것을 지역변수라고 합니다.
하지만 static 변수를 선언하게 되면 다시 함수를 호출하여도 초기화가 되지 않고 지난 값들을 기억하고 있다가 다시 그 값을 불러들이게 됩니다.
잘 이해가 안가신다면 밑에 실행 결과를 봅시다~

[##_http://blog.yagom.net/script/powerEditor/pages/1C%7Ccfile29.uf@1413BC424F707BEE1A67DE.png%7Cwidth=%22601%22%20height=%22118%22%20alt=%22%22%20filename=%224.png%22%20filemime=%22image/jpeg%22%7C_##]


짜잔~
static 변수는 함수를 몇 번 호출하더라도, 한 번 선언을 했으면 지워지지 않고 초기화 하는 1은 신경을 쓰지 않습니다.
하지만 지역변수인 녀석은 계속 1로 초기화 되기 때문에 1만 출력이 되죠.
또한 global 변수는 하나의 함수 안에 종속되지 않고 나하의 코드 파일 안에서 어디서든지 사용 할 수 있습니다.
그리고 extern 변수는 다른 파일에서 가져와서 쓸 수 있는거죠.


잘 이해가 되셨는지 모르겠습니다만...

저도 지금 감기는 눈으로 휘갈기는거라...ㅋㅋㅋ

혹시 이해가 가지 않는 부분이나 틀린 부분이 있으면 날카롭게 지적 부탁드립니다...^^

그럼 야곰은 이만 물러갑니다..^^



by yagom

twitter : @yagomsoft

 
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기   


↓↓↓저 열심히 썼는데 추천 한방 꾹 눌러주고 가시는 건 어떨까요? ^~^ 사랑합니다~ ↓↓↓ 



저작자 표시 비영리 변경 금지
신고

'C' 카테고리의 다른 글

C <15>. 전처리자  (0) 2012.05.14
C <14>. 배열  (4) 2012.05.11
C <13>. 변수의 범위  (0) 2012.04.05
C <12>. 함수  (4) 2012.04.02
C <11>. 포인터 (2)간단실습  (0) 2012.03.27
C <10>. 포인터 (1)개념잡기  (3) 2012.03.23
Posted by yagom


티스토리 툴바