static의 원초적인 목적은 함수내에서 선언되어 그 함수가 return되었다가 
다시 그 함수가 불리워도 그 변수가 값을 유지하고 있도록 하기 위함입니다. C에서 그렇죠. 
그런데 이런 static 변수는 기본적으로 해당 프로그램이 초기화될때
메모리에서 제일 먼저 만들어두는게 규칙이죠. 그래서 이 변수가 원래의 목적과 다르게 
Global 변수를 선언할 때 static을 선언하는 것처럼 오용되어 변질되어 왔습니다.

사실 Global은 static선언과 관계없이 처음부터 끝까지 존재하니까요.   
더 엄격히 말하면 static이 붙은 변수가 속한 범위(코딩 내부구조에 따른 유효범위)내에서만 
계속 값이 유지된다는 의미입니다.

static이 함수에 붙었다고 해서 같은 파일이어도 컴파일되고 하는 것은 단순히 그 현상일 뿐입니다
static이 어떤 파일에 존재하는 함수에 붙은 경우, 
특히 c경우에는 함수는 함수가 기록된 파일 자체가 범위가 되는 것입니다.

어떤 클래스이든, 변수이든, 그것이 static으로 선언되었을 때에는 그 선언된 클래스나 변수가 
기본적으로 어떠한 상황이든 값이나 기능을 메모리에 계속해서 유지하고자 함이라는 
기본적인 static의 목적을 명심하시고, 
이 경우 해당 유효범위내에서 메모리에 제일 먼저 생성되고 초기화되어 존재하는 것이라는 것만
생각하시면 됩니다.

여기에서 파생된 여러가지 현상을 이해하면 
좀더 static 선언의 의미를 확실히 알수 있을 것 같습니다. 
또한 static 선언을 남발하지 않고 정확하게 사용할 수 있지 않을까요? 
물론 현재 윈도우 프로그램이 메모리에 비교적 자유롭게 한다지만 
아무래도 메모리를 간결하게 사용하는 것이 프로가 아닐까 생각합니다

출처 : http://blog.naver.com/focet55/130013495793

-------------------------------------------------------------------------------------------

위의 의미로만 본다면 함수가 선언된 파일 내에서만 함수를 사용할 수 있다는 의미가 되겠네요.


또 출처 : http://sungod0.egloos.com/3086178

'Development' 카테고리의 다른 글

동기와 비동기  (0) 2014.08.08
스크랩 | 함수 프로그래밍이 주목받는 세 가지 이유  (0) 2014.04.29
static 함수  (0) 2014.02.26
비트연산  (0) 2014.02.25
프로그래밍 용어 모음/사전  (0) 2013.12.20
HTML Web UI Link  (0) 2013.06.21

+ Recent posts