2014-02-11 2 views
-2

시스템에서 자주 발생하는 이벤트를 추적하려는 시스템을 개발하고 싶습니다. 함수를 호출하여이 작업을 수행하고 이벤트 발생 카운터의 이전 값을 증가시키고 값을 출력 한 다음 반환합니다. 하려면이 함수를 반환하기 전에 심지어 값을 유지할 수있는 변수가 필요합니다. 함수의 다음 호출에서 카운터의 이전 값이 1 씩 증가 할 수 있으므로 이 켜집니다.전역 변수, 정적 변수, 로컬 변수 및 자동 변수 유형

귀하의 의견에 따르면 어떤 유형의 변수를 사용해야합니까? 글로벌, 정적 또는 자동? 유효한 논거를 사용하여 답을 뒷받침하십시오.

+2

숙제가 있습니까? (나는 또한 downvote하지 않았지만, 여기에있는 누군가가 당신을 위해 숙제를하고, 어떤 노력을 보여줄 것이라고 기대하지 않는다.) –

+1

나는 다운 다운을하지 않았지만, downvoter가 말하도록 돕는다 : 먼저 언어를 배우고, 문제를 해결하고 해결책을 찾은 다음 사용해보십시오. 작동하지 않으면 여기로 와서 물어보십시오. – texasbruce

+0

함수 외부에서 변수에 액세스해야하는 경우 (예를 들어 다른 함수에서 카운터를 인쇄하는 경우) 함수 외부에서 변수를 정의해야합니다 C 파일이나 C++ 파일의 익명 네임 스페이스에서 '정적'이어야 함). 몇 가지 인수에 따라 계산되거나 인쇄 된 함수를 디자인 할 수는 있지만, 기능의 목적에있어 심각한 혼란이있는 것은 아닙니다. –

답변

1

로컬 및 자동은 동일하며 네 번째 유형은 로컬이 아닌 레지스터입니다. 변수를 호출 할 때마다 재정의되므로 auto를 사용할 수 없습니다.

디자인의 필요에 따라 전역 또는 정적 중 하나를 선택합니다. 다른 파일에서 변수를 사용하려면 전역으로 만드십시오. 당신이 그것의 범위는 때마다 그 기능과 증가 로컬 수 있도록하려면

int count; // outside the function calls 

이벤트는 당신이 세계 할 수

static int count = 0; 
// variable is defined only once subsequent calls to it wont redefine it 

함수 내에서 정적뿐만 아니라 정적하게 발생 전체 파일이 외부 세계가 아닌 외부 파일에 액세스하게하려는 경우

static int count = 0; // outside of any function calls.