상세 컨텐츠

본문 제목

Static 키워드

C / C++/키워드

by 부레두 2023. 10. 12. 02:37

본문

0. 개요

  • 위치에 따라 ‘static 전역 변수’ / ‘static 로컬 변수’로 분류
  • Data 영역에 저장
  • 프로세스의 데이터 메모리 영역에 생성되어 이후 종료 될 때까지 생명을 유지
static 키워드를 붙여주면 무엇이든 static 속성을 가짐

1. 변수

static 전역 변수

  • 함수 외부에 선언된 static 변수
  • 프로그램이 시작될 때 생성 및 초기화되고 종료될 때까지 유지
  • 보통 전역 변수와 달리 *__소스 파일 단위 접근 범위 → 내부 링크만 적용

⇒ 파일이 다르면 같은 이름이여도 다른 변수로 취급

  • 변수의 링크 속성
    • 같은 소스 파일 내에서 연결 되는 되는 경우 '내부 링크'
    • 외부 소스 파일과도 연결하는 것을 '외부 링크'

오브젝트 파일들을 하나로 연결해 만든 실행 파일에서 호출 참조 연결 범위를 정의

더보기

vs extern : static 선언된 것과 달리 extern 키워드는 외부 링크까지 보유

 

static extern
다른 소스 파일에서 다른 변수로 취급 vs 프로그램 어디서든 이름 그대로의 전역 변수

 

static 로컬 변수

  •  함수 내부에 선언된 static 변수
  • 코드에서 변수 선언이 처음 호출될 떄 생성과 초기화 실행
  • 나머지 호출에서 “초기화 과정은 무시”

2. static 함수

  1. static 함수
    • static 전역 변수와 비슷한 링크 속성을 가짐 = 내부 링크
    • 동일한 이름을 갖지만 다른 파일에 존재하는 함수의 경우 별도의 함수로 취급

3. 클래스에서의 static 키워드

  1. static 멤버 변수
    • 특정 객체에 종속 되지 않고 해당 클래스의 모든 객체들에게 공유
    • 생성자에서 초기화 될 수 없으며, 외부에서 별도 초기화 과정이 필요
  2. static 클래스 객체
    • 전역 / 로컬인지에 따라 생성되는 시점이 다름
    • main 함수가 종료 된 후 프로그램이 종료되는 시점에 소멸
  3. static 클래스 멤버 함수
    • 클래스 객체에 종속된 것이 아니기 때문에 일반 멤버 변수 or 멤버 함수는 접근 불가능

'C / C++ > 키워드' 카테고리의 다른 글

Extern 키워드  (0) 2023.11.01
Inline 키워드  (1) 2023.10.12
메모리 구조  (0) 2022.12.28
변수  (0) 2022.12.14
상속과 다향성  (0) 2022.07.01

관련글 더보기