로컬 정적 변수와 글로벌 정적 변수의 차이점은 무엇입니까?


우수 답변

글로벌 및 로컬 : 범위, 즉 사용할 수있는 위치와 관련이 있습니다.

정적 : 시간 및 변동성, 즉 사용할 수있는 기간과 관련이 있습니다.

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

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다