C 언어
스토리지 클래스는 변수의 가시성과 위치를 나타냅니다. 코드의 어느 부분에서 변수에 액세스할 수 있는지 알려줍니다. C의 스토리지 클래스는 다음을 설명하는 데 사용됩니다.
따라서 스토리지 클래스는 변수에 대한 정보를 나타내는 데 사용됩니다.
참고:변수는 데이터 유형, 해당 값뿐만 아니라 스토리지 클래스와도 연관됩니다.
표준 스토리지 클래스에는 총 4가지 유형이 있습니다. 아래 표는 C의 스토리지 클래스를 나타냅니다.
스토리지 클래스 목적 자동 기본 저장소 클래스입니다.extern 전역 변수입니다.정적 제어가 함수 호출로 넘어간 경우에도 값을 반환할 수 있는 지역 변수입니다.등록 레지스터 내부에 저장되는 변수입니다.이 C 자습서에서는 예제와 함께 C에서 다양한 유형의 스토리지 클래스를 배웁니다.
자동 저장 클래스를 사용하여 정의된 변수를 로컬 변수라고 합니다. 자동은 자동 스토리지 클래스를 나타냅니다. 변수는 명시적으로 지정되지 않은 경우 기본적으로 자동 스토리지 클래스에 있습니다.
auto 변수의 범위는 특정 블록으로만 제한됩니다. 제어가 블록을 벗어나면 액세스가 파괴됩니다. 이는 auto 변수가 선언된 블록만 접근할 수 있음을 의미합니다.
auto 키워드는 자동 스토리지 클래스를 정의하는 데 사용됩니다. 기본적으로 auto 변수는 가비지 값을 포함합니다.
Example, auto int age;
아래 프로그램은 두 개의 지역 변수가 있는 함수를 정의합니다.
int add(void) { int a=13; auto int b=48; return a+b;}
서로 독립적인 각 블록 코드의 자동 변수에 대한 범위 수준 "가시성 수준"을 보여주는 또 다른 프로그램을 사용합니다.
#include <stdio.h> int main( ) { auto int j = 1; { auto int j= 2; { auto int j = 3; printf ( " %d ", j); } printf ( "\t %d ",j); } printf( "%d\n", j);}
출력:
3 2 1
Extern은 외부 스토리지 클래스를 나타냅니다. Extern 스토리지 클래스는 두 개 이상의 파일 간에 공유되는 전역 함수 또는 변수가 있을 때 사용됩니다.
키워드 extern 원래 파일에 이미 정의된 변수나 함수의 참조를 제공하기 위해 다른 파일에서 전역 변수나 함수를 선언하는 데 사용됩니다.
extern 키워드를 사용하여 정의된 변수를 전역 변수라고 합니다. 이러한 변수는 프로그램 전체에서 액세스할 수 있습니다. extern 변수는 원래 파일에 이미 정의되어 있으므로 초기화할 수 없습니다.
Example, extern void display();
#include <stdio.h> extern i; main() { printf("value of the external integer is = %d\n", i); return 0;}
#include <stdio.h> i=48;
결과:
value of the external integer is = 48
위의 코드를 컴파일하고 실행하려면 다음 단계를 따르세요.
1단계) 새 프로젝트 만들기,
2단계) C를 선택하고 다음을 클릭하십시오.
3단계) 다음을 클릭하십시오.
4단계) 세부정보를 입력하고 다음 을 클릭합니다.
5단계) 마침을 클릭하십시오.
6단계) main.c 파일에 이전 프로그램과 같이 메인 코드를 넣고 저장
7단계) 새 C 파일 생성 [File -> new -> Empty File , 저장( original.c 로 )하고 대화 상자에서 "확인"을 클릭하여 현재 프로젝트에 추가합니다.
8단계) main() 함수 없이 앞의 예제와 같은 original.c 파일의 C 코드를 넣어 저장합니다.
9단계) 프로젝트를 빌드하고 실행합니다. 결과는 다음 그림과 같습니다.
정적 변수는 함수/파일 내에서 로컬 정적 변수로 사용됩니다. 전역 변수로도 사용할 수 있습니다.
Example: static int count = 10;
정적 변수의 기본 초기값은 0이며 평생 동안 한 번만 초기화됩니다.
#include <stdio.h> /* function declaration */ void next(void); static int counter = 7; /* global variable */ main() { while(counter<10) { next(); counter++; } return 0;} void next( void ) { /* function definition */ static int iteration = 13; /* local static variable */ iteration ++; printf("iteration=%d and counter= %d\n", iteration, counter);}
결과:
iteration=14 and counter= 7 iteration=15 and counter= 8 iteration=16 and counter= 9
전역 변수는 파일 전체에서 액세스할 수 있지만 정적 변수는 코드의 특정 부분에만 액세스할 수 있습니다.
정적 변수의 수명은 전체 프로그램 코드에 있습니다. static 키워드를 사용하여 선언하거나 초기화하는 변수는 항상 0을 기본값으로 포함합니다.
이러한 변수에 빠르게 액세스하기 위해 RAM 대신 CPU 레지스터의 함수 또는 블록 내의 로컬 변수를 저장하려는 경우 레지스터 스토리지 클래스를 사용할 수 있습니다. 예를 들어, "카운터"는 레지스터에 저장하기에 좋은 후보입니다.
Example: register int age;
키워드 등록 레지스터 스토리지 클래스를 선언하는 데 사용됩니다. 레지스터 저장 클래스를 사용하여 선언된 변수는 프로그램 전체에 걸쳐 수명이 있습니다.
자동 스토리지 클래스와 유사합니다. 변수는 특정 블록으로 제한됩니다. 유일한 차이점은 레지스터 저장 클래스를 사용하여 선언된 변수가 메모리 대신 CPU 레지스터 내부에 저장된다는 것입니다. 레지스터는 메인 메모리보다 접근이 빠릅니다.
레지스터 스토리지 클래스를 사용하여 선언된 변수에는 기본값이 없습니다. 이러한 변수는 종종 프로그램 시작 부분에 선언됩니다.
#include <stdio.h> /* function declaration */ main() { {register int weight; int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/} }
출력:
error: address of register variable 'weight' requested
다음 표에는 C 프로그래밍에서 일반적으로 사용되는 각 스토리지 클래스의 주요 기능이 요약되어 있습니다.
스토리지 클래스 선언 저장소 기본 초기값 범위 평생 자동 함수 내부/blockMemoryUnpredictableWithin 함수/blockWithin 함수/블록레지스터 함수/블록 내부 CPU RegistersGarbageWithin the function/blockWithin the function/blockextern 모든 함수 외부MemoryZeroEntire 파일 및 변수가 externprogram 런타임으로 선언된 기타 파일정적(로컬) 함수 내부/blockMemoryZero 내부 함수/블록 프로그램 런타임정적(전역) 모든 기능 외부에서MemoryZeroGlobal프로그램 런타임요약
이 튜토리얼에서 우리는 요약하기 위해 C의 스토리지 클래스에 대해 논의했습니다.
C 언어
이 장에서는 Java의 내부 클래스에 대해 설명합니다. 중첩 클래스 Java에서 메소드와 마찬가지로 클래스의 변수도 다른 클래스를 멤버로 가질 수 있습니다. 다른 클래스 내에 클래스를 작성하는 것은 Java에서 허용됩니다. 내부에 작성된 클래스를 중첩 클래스라고 합니다. , 내부 클래스를 보유하는 클래스를 외부 클래스라고 합니다. . 구문 다음은 중첩 클래스를 작성하는 구문입니다. 여기에서 Outer_Demo 클래스 외부 클래스이고 Inner_Demo 클래스입니다. 중첩 클래스입니다. class Outer_Demo {
소방서는 미국에서만 매년 백만 건 이상의 화재에 대응합니다. 그리고 그 숫자는 1970년대 이후 꾸준히 감소하고 있지만 화재는 여전히 발생할 때마다 극도로 위험한 상황의 가능성을 제시합니다. 그러나 그것들은 모두 타지만 모든 불이 같은 것은 아닙니다. 화재를 분류하고 진화하는 방법을 위해 소방 전문가들은 화재를 분류하는 시스템을 개발했습니다. 화재 등급은 무엇을 설명합니까? 화재 등급은 가장 좋은 소화 또는 진압 방법을 포함하여 다른 공통 기능과 함께 존재하는 연료 소스를 설명합니다. 정밀 가공과 같이 화재 위험이 높은 산업에서