2014-12-22 1 views
-1

나는이 기능을 이해하는 ctypes로 변환하려고 해요 : 우리는 여기를 참조이것이 글로벌입니까?

15 XDisplay* GetXDisplay() { 
16 static XDisplay* display = NULL; 
17 if (!display) 
18  display = OpenNewXDisplay(); 
19 return display; 
20 } 

if(!display) 다음 (static XDisplay* display = NULL;) display = OpenNewXDisplay(); 수행하지만 저를 혼동하는 사람이 displayNULL 것을 위의 줄에 정의입니다 그래서 왜 지구상에서 if의 필요성, 그가 null로 설정한다면? 어떻게 든 글로벌 변수를 표시합니까?

+3

당신의 –

+2

가능 중복 뭐죠 정적에 대한 자세한 내용을 읽어야합니다 (http://stackoverflow.com/questions/572547/ what-does-static-mean-in-ac-program) – usr2564301

+0

이 스 니펫의 컨텍스트에서 정적을 이해하는 데 도움이 될 수 있습니까, 아플시겠습니까?하지만 몇 마디를 공유 할 수 있다면 정말 좋을 것입니다! :) – Noitidart

답변

1

앞서 언급 한 다른 것들은 정적 변수입니다.

정적 스토리지 클래스는 프로그램의 생명을 대신 시간 만들고 여기가에 와서 범위를 벗어나마다 파괴 동안 존재 로컬 변수를 유지하도록 컴파일러에 지시합니다. 따라서 로컬 변수를 정적으로 만들면 이 함수 호출간에 값을 유지할 수 있습니다.

출처 : [? "정적"C 프로그램에 의미 하는가 무엇] http://www.tutorialspoint.com/cprogramming/c_storage_classes.htm

+0

이 설명은 나에게 가장 도움이되었다 감사합니다! – Noitidart

5

디스플레이는 정적 변수입니다.

정적 변수의 경우 함수를 입력 할 때마다 초기화하는 것이 아니라 한 번만 초기화가 발생합니다. 이것은 단지 기본 C (기본 C++ 또는 기본 Objective-C)입니다.

그래서이 코드는 싱글 톤 객체를 생성하는 기본적인 방법 일뿐입니다.

+0

제 스 니펫의 컨텍스트에서 정적을 이해하도록 도와 주신 것에 대해 대단히 감사합니다 !! :) 그게 최선의 학습 :) – Noitidart

1

당신은 정적 단어가 의미하는 무슨에 대한 자세한 내용을 읽어야

http://en.wikipedia.org/wiki/Static_variable

는 basicly는 변수가 한 번만 정의된다는 것을 의미합니다. 즉, 다음 번에 함수가 호출 될 때 변수의 이전 값이 유지됩니다.

그래서 일반 변수의 범위를 가지지 만 함수 호출보다 그 값을 유지하기 때문에 전역 변수가 아닙니다.