C Language

C언어 static, register, volatile 지정자 개념

567Rabbit 2024. 6. 19. 12:13

https://codebunny99.tistory.com/122

 

CPU 메모리에 대해 학습하기

(형식) 변수 = 데이터 =을 기준으로 왼쪽은 변수, 오른쪽은 데이터라고 한다. count = 3 코드 (Code) 영역:프로그램의 "요리책"이라고 생각할 수 있다.요리책에는 요리 방법(명령어)들이 적혀

codebunny99.tistory.com

 

 

 

저장 유형 지정자 static

 

- 변수의 메모리가 데이터 (Data) 영역에 저장되도록 하는 것이다.

#include <stdio.h>

void sub() {
    static int scount = 0;
    int acount = 0;
    printf("scount = %d\t", scount);
    
    printf("acount = %d\n", acount);
    scount++
    acount++
}

int main(void){

    sub();
    sub();
    sub();
   
    return 0;
   
}

 

 

 

 

저장 유형 지정자 register

 

-레지스터(register)에 변수를 저장한다

register int i;
for(i = 0 ; i < 100 ; i++)
	sum += i;

 

- 레지스터란 CPU 안에 소량의 데이터 저장소이다.

- 메모리까지 가지 않아도 돼서 속도가 빠르고 성능이 좋아진다.

- 자주 사용하는 데이터를 저장하면 좋다.

 

 

 

 

volatile 지정자

 

- 하드웨어가 수시로 변수의 값을 변경하는 경우에 사용된다.

- 하드웨어와 연결된 변수

- 임베디드 시스템에 쓰인다.

volatile int io_port; //하드웨어와 연결된 변수

void wait(void){
	io_port = 0;
	while (io_port != 255);
}