우수 답변
글로벌 및 로컬 : 범위, 즉 사용할 수있는 위치와 관련이 있습니다.
정적 : 시간 및 변동성, 즉 사용할 수있는 기간과 관련이 있습니다.
C & C ++ 프로그램의 정적 변수는 한 번만 정의됩니다 (할당 된 메모리 및 초기 값 0). 프로그램 제어에서도 선언문을 다시 실행합니다. 정적 변수의 값과 수명은 프로그램이 끝날 때까지 유지되지만 범위 내에서 사용할 수 있습니다.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
출력 :
0
1
2
위의 예에서는 로컬 정적 변수의 사용을 보여줍니다.
전역 정적 : 전역 범위에서 정적 변수를 선언 할 수도 있습니다. 또한 값을 할당하지 않으면 초기 값이 0이라는 점을 제외하고는 다른 전역 변수와 거의 동일합니다.
Answer
로컬 정적 :
- 기본값은 0입니다.
- 데이터 섹션에 저장 됨 (bss 또는 초기화 됨) 메모리
- 범위 또는 가시성은 블록 또는 함수 내에 있습니다.
- 지역 정적 변수의 수명은 프로그램에서 시작하고 끝납니다.
글로벌 정적 :
- 글로벌 변수가 정적이면 범위 또는 가시성이 해당 파일 내에 만 있으며 다른 파일에서 extern을 사용하더라도 작동하지 않습니다. . 연결 오류가 발생합니다.
예 1 :
static int a=20;
void xyz()
{
printf("\%d, ", a);
a = 100;
}
int main()
{
printf("\%d, ", a);
{
static int a = 10;
printf("\%d, \n", a);
xyz();
}
printf("\%d", a);
}
// Output is 20, 10, 20, 100