데이터 영역 변수(전역,정적,외부)

김태훈·2024년 1월 1일
0

C/C++

목록 보기
6/22

전역변수

전역변수를 헤더파일에 선언하고 다른 CPP파일들이 참조 받으면 오류

->데이터 영역에 같은 이름의 변수가 여러개 형성

컴파일시 오류 없지만, 링크단계에서 오류

누굴 불렀는지 알 수 없음

정적변수 (static)

파일에 선언되면 그 파일에,
함수에서 선언되면 그 함수에
클래스,구조체에 선언되면 그 클래스 ,구조체에서만 국한된다. - 정적의 의미

즉, 사용은 선언된 내부에서만 사용 가능,

하지만 데이터 영역에 존재하기 때문에 정적변수 해당 지역이 사라졌다가
다시 호출해도 변수의 값이 유지 .

전역변수 선언한 헤더파일 참조시 링크단계 재정의 문제를 해결 가능

->이유: 사용 범위를 국한시켰기 때문

Static 초기화 구문은 첫번째 실행시 한번만 초기화 됨

외부변수(extern)

다른 파일들이 참조하는 헤더파일에는 변수 선언시 초기화를 진행하면 안됨.

올바른 예)

extern int a; 
int(){}

그 헤더 파일을 제외한 다른 파일에서 실제로 초기화 되었다는 것이 한번 존재 해야함(헤더,cpp 상관 없음)

extern int a=0; 
int(){}

profile
복습을 위한 핵심 내용 및 모작

0개의 댓글