C 언어 변수의 저장 클래스

2085 단어 C
C 언어의 변 수 는 모두 두 가지 속성 이 있 습 니 다. 데이터 형식 과 저장 유형 입 니 다.
저장 클래스: auto, static, register, extern, 변수의 저장 클래스 는 변수 가 메모리 에 저장 되 는 영역 을 결정 합 니 다.
메모리 저장 소 소개
C 언어 에서 메모리 저장 소 는 스 택, 더미, 정적 저장 소, 상수 저장 소 로 나 뉜 다.
1) 창고
컴 파일 러 가 관리 하 는 동적 저장 영역 은 임시 변 수 를 저장 하 는 데 사용 되 며 필요 하지 않 을 때 자동 으로 회수 합 니 다.
함수 형 삼, 국부 변수, 기타 임시 변수 (예 를 들 어 a + + 가 발생 하 는 임시 변수)
2) 더미
프로그램 이 관리 하 는 동적 저장 영역 은 프로그램 이 malloc 를 사용 하여 신청 한 메모리 공간 을 분배 하 는 데 사용 되 며 스스로 방출 해 야 합 니 다.
3) 정적 저장 소
전역 변 수 를 저장 합 니 다. 이 지역 에서 분 배 된 메모 리 는 전체 프로그램 이 실행 되 는 과정 에서 유효 합 니 다. 프로그램 이 끝 난 후에 자동 으로 방출 되 고 메모리 분 배 는 자동 으로 초기 화 됩 니 다.
4) 상수 기억 영역
메모리 프로그램의 상수
 
2. auto 변수
//                ,auto       

int fun() {
    auto int a = 1;
}

int fun() {
    int a = 1;                //         auto  ,        
}

//   :         auto  

3. static 변수
auto 변 수 는 함수 가 끝 날 때마다 방출 되 며, static 는 프로그램 이 끝 날 때 까지 변 수 를 메모리 에 저장 할 수 있 습 니 다.
#include

void test() {
    static int a = 1;
    ++a;
    printf("%d", a);
}

int main() {
    test();
    test();
    test();
}

//   234

4. register 변수
모든 변수의 값 은 메모리 에 저 장 됩 니 다. 컴퓨터 가 직접 작 동 하 는 대상 은 레지스터 (CPU 의 소자) 입 니 다.레지스터 는 읽 기와 쓰기 속도 가 매우 빨 라 서 프로그램 이 변수 에 접근 해 야 할 때 메모리 에서 변수 값 을 레지스터 로 추출 하고 연산 이 끝 난 후에 값 이 바 뀌 면 레지스터 의 값 을 메모리 에 저장 합 니 다.
register 는 변수의 값 을 레지스터 에 직접 저장 할 수 있 습 니 다. 메모리 에서 값 을 가 져 올 필요 가 없고 저장 할 때 메모리 에 저장 하지 않 고 레지스터 에서 직접 조작 할 수 있 습 니 다.
변수 가 자주 사용 되면 register 변수 로 설명 하여 프로그램 효율 을 크게 높 일 수 있 습 니 다.
#include

int main() {
    register int a = 1;

    //   :

    // 1、register           ,         

    // 2、    register          

    // 3、    register               ,                 。         ,              ,                      。
}

5. extern 변수
전역 변 수 를 확장 하 는 데 사용 되 는 역할 영역 입 니 다. 예 를 들 어:
//    file1.c

int a = 1;


//   2 file2.c      file1.c   a   

extern int a;

void main() {
    printf("%d", a);
}

좋은 웹페이지 즐겨찾기