Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++에서 전역 및 정적 변수가 기본값으로 초기화되는 이유는 무엇입니까?

<시간/>

전역 및 정적 변수는 C 또는 C++ 표준에 있고 컴파일 시간에 0으로 값을 할당할 수 있기 때문에 기본값으로 초기화됩니다. 정적 및 전역 변수는 생성된 개체 코드와 동일하게 동작합니다. 이러한 변수는 .bss 파일에 할당되며, 로드 시 변수에 할당된 상수를 가져와서 메모리를 할당합니다.

다음은 전역 및 정적 변수의 예입니다.

예시

#include int a;static int b;int main() { int x; 정적 정수 y; 정수 z =28; printf("전역 변수 a의 기본값 :%d", a); printf("\n전역 정적 변수 b의 기본값:%d", b); printf("\n로컬 변수 x의 기본값:%d", x); printf("\n로컬 정적 변수 y의 기본값:%d", y); printf("\n지역변수 z의 값 :%d", z); 반환 0;}

출력

전역 변수 a의 기본값 :0전역 정적 변수 b의 기본값 :0로컬 변수 x의 기본값 :0로컬 정적 변수 y의 기본값 :0로컬 변수 z의 값 :28

위 프로그램에서 전역 변수는 main() 함수 외부에서 선언되며 그 중 하나는 정적 변수입니다. 세 개의 지역 변수가 선언되고 변수 z도 초기화됩니다.

int a;정적 정수 b;….int x;정적 정수 y;int z =28;

기본값이 인쇄됩니다.

printf("전역 변수 a의 기본값 :%d", a);printf("\n전역 정적 변수 b의 기본값 :%d", b);printf("\n로컬 변수의 기본값 변수 x :%d", x);printf("\n로컬 정적 변수 y의 기본값 :%d", y);printf("\n로컬 변수 z의 값 :%d", z);