C의 정적 변수에 대해 알아보기 [코딩 예제 포함]
게시 됨: 2020-10-21프로그래밍 과정에서 대부분의 변수를 해결했을 수 있습니다. 변수 선언 에 따라 메모리에 저장된 값의 크기, 레이아웃, 범위 및 적용할 작업 집합이 결정 되기 때문에 모든 프로그래머에게 매우 중요한 측면입니다 . 프로그램이 조작할 수 있는 저장 영역에 부여되는 이름입니다. 이 기사에서는 C에서 가장 중요한 변수 중 하나인 정적 변수 에 대해 설명합니다 .
C에서 정적 키워드 는 꽤 자주 사용됩니다. 대부분의 프로그래머가 종종 혼동하는 한 가지는 지역 및 전역 변수가 정적에 미치는 영향입니다. 각각의 경우에 static 키워드는 데이터가 저장되는 위치와 프로그램 전체에서 데이터가 작동하는 방식에 따라 다르게 작동합니다. 다음은 정적 키워드의 주요 용도입니다.
나. 함수 또는 정적 지역 변수의 지역 변수: 가시성은 자동 지역 변수와 동일합니다.
ii. 모듈의 전역 변수 또는 정적 전역 변수: 프로그램 상단에 선언됩니다.
iii. 모듈의 함수 또는 정적 함수: 프로그램 전체에 존재합니다.
iv. 멤버 변수 또는 정적 멤버 변수: 클래스의 모든 인스턴스에서 액세스합니다.

v. 메서드 또는 정적 메서드: 클래스의 모든 인스턴스에서 액세스합니다.
세 가지 사용 사례를 모두 살펴보고 변수의 저장 영역에 따라 어떻게 변경되고 코드 품질이 향상되는지 살펴보겠습니다.
목차
정적 변수란 무엇입니까?
프로그래밍에서 정적 변수 는 "정적으로" 할당된 변수입니다. 즉, 수명이 프로그램 실행 전체에 걸쳐 있습니다. 'static' 키워드로 선언되고 함수 호출에서 값을 유지합니다.
통사론:
정적 변수 의 구문 은 다음과 같습니다.
정적 데이터 유형 변수 이름;
정적 변수 선언
정적 변수 가 선언되면 복사본이 생성됩니다 . 이것들이 지역 변수 대신 사용되는 주된 목적은 그것이 존재하는 범위에서 할당된 값을 유지하기 위한 것입니다. 프로그래머는 프로그램의 새로운 범위에서 변수를 계속해서 초기화할 필요가 없습니다. 전체 프로그램에 존재합니다.
일반적으로 Static은 모든 데이터 유형에 적용되는 스토리지 클래스 지정자입니다. 컴파일러가 프로그램 범위에서 변수나 함수를 제한하도록 지시하고 프로그램 수명 내내 지속됩니다. 이 속성을 사용하면 의도하지 않은 액세스를 방지하는 프로그램의 나머지 부분에서 static을 캡슐화하거나 변수를 숨길 수 있습니다. 개발자는 모듈 내에서 변수에 액세스하는 방법을 제어할 수 있습니다. 이것은 좋은 프로그래밍 방법입니다.
읽기: 상위 130개 이상의 Java 인터뷰 질문 및 답변
프로그램의 정적 변수
· 전체 코드를 실행하는 동안 정적 변수 가 메모리 공간에 남아 있습니다.
· 정적 변수 의 기본 초기화 값은 할당되지 않은 경우에도 0입니다. 이는 로컬 변수의 경우가 아닙니다.
· C에서 static 키워드를 사용하여 정적 변수 를 초기화하는 것이 필수 입니다. 그렇지 않으면 오류가 반환됩니다.
· 정적 변수 는 함수가 처음 호출될 때만 초기화됩니다.
· 정적 변수 에서는 정적 변수 의 메모리 가 할당됩니다.
· 전역 정적 변수 는 프로그램 외부에서 액세스할 수 없습니다.
C의 정적 변수에 대한 기본 프로그램
#include <stdio.h>

정수 메인()
{
printf("%d", func());
printf("\n%d", func());
반환 0;
}
정수 함수()
{
공전 정수 수 = 0;
카운트++;
반환 횟수;
}
여기 이 코드에서 count 변수는 정적 변수 로 선언되어 있습니다. func()를 호출할 때마다 count 값이 1로 업데이트됩니다. 다음 함수 호출에서 count 변수 값은 2가 됩니다. 따라서 정적 변수 값은 함수 호출에서 유지됩니다.
산출:
1
2
로컬 변수와 정적 변수의 차이점
로컬 변수와 정적 변수 는 프로그램에서 서로 바꿔서 사용됩니다. 다음은 둘 사이의 몇 가지 주요 차이점입니다.
차별화 포인트 | 지역변수 | 정적 변수 |
변수 키워드 선언 | 1. 자동 변수에 의해 선언됩니다(예: int a = 1). | 1. 정적 변수 에 의해 선언됩니다 (예: static int a = 1). |
변수 선언 | 2. 함수 내에서 선언됩니다. | 2. 함수 내부 또는 외부에서 선언됩니다. |
변수 생성 | 3. 함수가 호출될 때마다 생성됩니다. | 3. 1차 함수 호출에 대해서만 생성되며, 이후 호출에도 동일한 변수를 사용합니다. |
변수 초기화 | 4. 함수가 호출될 때마다 초기화됩니다. | 4. 프로그램에서 한 번만 초기화됩니다. |
변수 기본값 | 5. 초기화하지 않으면 가비지 값이 변수에 저장됩니다. | 5. 초기화하지 않으면 기본적으로 값 0이 static으로 저장됩니다. |
가변 종료 | 6. 함수가 종료되면 종료됩니다. | 6. 함수 내에서 선언된 경우 해당 함수에서만 액세스할 수 있습니다. 범위는 해당 기능으로 제한되며 수명은 프로그램이 종료될 때까지입니다. 함수 외부에서 선언된 경우 변수는 전역 변수가 되며 파일의 모든 함수에서 액세스할 수 있습니다. 범위는 파일이지만 수명은 프로그램이 종료될 때까지입니다. |
이 표를 보면 정적 변수 가 로컬 변수보다 선호되는 이유가 분명 합니다.
로컬 및 정적 변수를 모두 포함하는 코드
#include <stdio.h>
정수 메인() {
자동 정수 a = -15;
정적 정수 b = 5;
printf("자동 변수 a의 값은 %d입니다\n", a);
printf(" 정적 변수 b의 값은 %d입니다\n",b);
if(a!=0)
printf("정적변수와 자동변수의 합은 %d\n",(b+a));
반환 0;
}
프로그램 출력:
자동 변수의 값은 -15입니다.

정적 변수 의 값 은 5입니다 .
정적 변수와 자동 변수의 합은 -10입니다.
더 읽어보기: C 프로젝트 아이디어
요약
static 키워드는 C 프로그래밍에서 제공하는 많은 기능에 널리 사용됩니다. 주요 용도는 함수 또는 모듈에 정의된 변수의 범위를 제한하는 것입니다. 정적 변수 를 사용하여 외부 프로그램에서 변수와 함수를 숨길 수 있으므로 개발자는 보안을 경험할 수 있습니다 . 많은 현대 객체 지향 언어에서 static의 사용은 private와 public으로 대체됩니다.
더 자세히 알아보고 업계 전문가의 멘토링이 필요한 경우 upGrad & IIIT Banglore의 전체 스택 소프트웨어 개발 PG 디플로마를 확인하십시오.