반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩
- 컴퓨터비전
- 데이터과학
- Yes
- 클라우드컴퓨팅
- 버전관리
- 머신러닝
- 2
- 소프트웨어
- 빅데이터
- 보안
- 소프트웨어공학
- 컴퓨터공학
- I'm Sorry
- 프로그래밍언어
- 프로그래밍
- 알고리즘
- 인공지능
- 파이썬
- 네트워크
- 사이버보안
- 데이터베이스
- 데이터분석
- 웹개발
- 데이터구조
- 네트워크보안
- 자료구조
- 컴퓨터과학
- 딥러닝
- 자바스크립트
Archives
- Today
- Total
스택큐힙리스트
C에서의 전역 변수는 정적(static)인가 아닌가요? 본문
반응형
글로벌 변수들은 C 언어에서 기본적으로 static
또는 extern
인가요?
만약 글로벌 변수들이 기본적으로 static
이라면, 이는 우리가 한 개의 파일 안에서 그 변수들에 접근할 수 있다는 것을 의미하지만, 다른 파일에서도 글로벌 변수를 사용할 수 있다는 것을 의미합니다.
이는 기본적으로 extern
저장소를 가지고 있는 것을 의미하는 건가요?
답변 1
저장 클래스(즉, extern
또는 static
키워드)를 지정하지 않으면 기본적으로 전역 변수는 외부 연결성을 갖습니다. C99 표준에 따르면:
§6.2.2 식별자의 연결성
3) 객체 또는 함수에 대한 파일 범위 식별자의 선언이
static
저장 클래스 지정자를 포함하는 경우, 식별자는 내부 연결성을 갖습니다.5) 함수에 대한 식별자의 선언에 저장 클래스 지정자가 없는 경우, 연결성은 정확히
extern
저장 클래스 지정자를 포함하여 선언된 것과 동일하게 결정됩니다. 객체에 대한 식별자의 선언이 파일 범위를 가지고 저장 클래스 지정자가 없는 경우, 연결성은 외부입니다.
그래서 extern
키워드를 명시하지 않아도, 글로벌 변수는 다른 소스 파일(번역 단위라고 불리는)에서도 접근할 수 있습니다. 왜냐하면 그들은 여전히 동일한 변수에 대한 extern
선언을 갖고 있을 수 있기 때문입니다. 변수의 내부 연결을 지정하기 위해 static
키워드를 사용하면, 다른 소스 파일에서 동일한 변수 이름을 가진 extern
선언이 있더라도, 다른 변수를 참조할 것입니다.
답변 2
전역 변수 (Global variables)는 C 언어에서 정적인가요?C 언어에서 전역 변수 (Global variables)는 정적인가요 아닌가요?
C 언어는 프로그래밍 언어 중에서도 가장 널리 사용되는 언어 중 하나입니다. C 언어는 그 유명한 저수준 프로그래밍 언어로, 시스템과 밀접하게 연관되는 프로그램 개발에 많이 사용됩니다. C 언어를 잘 이해하고 활용한다면, 성능이 뛰어난 시스템을 개발할 수 있을 뿐 아니라 다양한 플랫폼에서 유용한 프로그램을 구현할 수 있습니다.
C 언어에서 사용되는 변수들은 다른 언어와 마찬가지로 저장공간을 할당받으며, 값을 보존하는 역할을 합니다. 이때, 변수들은 그 범위에 따라 지역 변수 (Local variables)와 전역 변수 (Global variables)로 나뉩니다.
지역 변수는 특정한 함수나 블록 안에 선언되어, 해당 함수나 블록 내에서만 유효합니다. 한편, 전역 변수는 어느 곳에서든지 참조할 수 있으며, 프로그램 전체에서 공유되는 값입니다. 이러한 전역 변수의 특성은 많은 경우에 유용하게 사용됩니다.
그렇다면 C 언어에서 전역 변수는 정적인가요 아니면 동적인가요? C 언어에서 전역 변수는 일반적으로 정적입니다. 정적 변수는 전역 변수가 아니더라도 특정 범위에서만 유효성이 보장되는 변수로 정의됩니다. 전역 변수의 경우, 프로그램이 시작부터 끝까지 메모리에 상주하며, 프로그램 전체에서 접근할 수 있습니다.
정적 변수에 대한 특징으로는 초기화 값이 없으면 0으로 자동 초기화되어 사용됩니다. 또한, 프로그램 시작 시 생성되고 종료될 때까지 유지되며, 함수 내에서 선언되는 지역 변수와는 달리 스택 메모리가 아닌 데이터 영역에 할당됩니다. 따라서 전역 변수는 프로그램의 생애 주기 동안 사용되며, 다른 함수들에서도 참조할 수 있습니다.
그러나, C 언어에서는 전역 변수를 외부 변수 (External variables)로 만들 수도 있습니다. 외부 변수는 다른 소스 파일에서 정의된 변수로, 외부에서 참조할 수 있는 전역 변수입니다. 이 경우에는 전역 변수가 다른 파일들에서도 사용될 수 있습니다.
결론적으로, C 언어에서의 전역 변수는 일반적으로 정적입니다. 이는 전역 변수가 프로그램의 실행 동안 유지되며, 다른 함수들에서도 접근할 수 있다는 의미입니다. 그러나 외부 변수로서의 전역 변수는 다른 파일들에서도 참조 가능하므로, 유의해야 합니다. C 언어를 사용할 때에는 변수의 범위와 유효성을 명확히 이해하여 적절하게 활용해야 합니다.
반응형
Comments