static은 정말 중요합니다. 제가 느끼기로 편리함과 위험성을 동시에 가지지만 제대로 알고 써야하기 때문입니다.
이 static 키워드는 변수나 함수에 대해 지정할 수 있는데, 다음과 같이 세가지 경우가 있습니다.
- 지역변수를 static으로 처리하는 경우
- 전역변수나 함수를 static으로 처리하는 경우
- 클래스의 멤버 변수나 멤버 함수를 static으로 처리하는 경우
세 개 모두 자주 쓰는 것 같습니다. 마지막 세 번째는 이 글에서 말고 클래스 카테고리에서 다루겠습니다.
링크를 걸어두겠습니다.
(저는 이 책을 보기 전에 static을 구별하는 법을 모르고 있었습니다. 그냥 값이 유지되는 변수로만 생각하고 있었어요
이제 알았으니 됬죠.. 뭐...!( •̀ ω •́ )✧)
1. 정적 지역변수
변수의 가시 범위와 생존기간에서 배운 지역변수 앞에 static으로 선언하면 정적 지역변수 라고 합니다.
정적 지역변수는 일반 지역변수와는 달리 전역변수와 동일한 생존기간을 갖습니다.
즉, 사용은 함수 안에서만 할 수 있지만 프로그램이 실행되는 동안 생존하는 변수입니다!!!
그리고, 정적 지역변수는 전역변수와 같이 프로그램이 시작되면 만들어져 초기화가 됩니다!!!!
저는 이것을 이책을 보고 알았어요. 이때까지 아주 커다란 오해를 하고 있었습니다.(#°Д°)
이것을 꼭 기억해야합니다.
2.정적 전역변수와 정적 함수
전역변수나 함수도 static으로 처리할 수 있습니다.
그러나 이 경우는 의미가 완전히 달라집니다!
이것은 생존기간(lifetime)이 아니라 가시 범위(visibility)의 문제가 됩니다.
전역변수나 함수를 static으로 처리하는 것은 그 "변수나 함수를 해당 파일에서만 사용하라"는 의미입니다.
이것은 매우 중요한 의미를 갖습니다.
동일한 이름의 전역변수나 함수를 여러 파일에서 각기 다른 용도로 만들어 사용할 수 있다는 것을 의미합니다.
(저는 이 부분을 헷갈렸어요 제가 영어를 느낌으로 해석하는것도 있긴한데. 뭔가 static은 공공의 다 오픈하는 느낌을 주는데 정적 전역변수와 정적 함수는 전혀 반대되는 기능을 하기 때문입니다. 물론 뜻은 전혀 다른 정적의, 움직이지 않는 입니다.)
'C++ 프로그래밍 > 함수' 카테고리의 다른 글
참조자의 반환 (0) | 2022.07.21 |
---|---|
함수로 배열을 전달, 반환 (0) | 2022.07.21 |
변수의 가시 범위와 생존기간 (0) | 2022.07.11 |
디폴트 매개변수 (0) | 2022.06.30 |
라이브러리 함수와 사용자 정의 함수 (0) | 2022.06.29 |