카테고리 없음
[C언어] 레지스터(register) 변수
s뽈록이s
2013. 5. 8. 16:58
void main() { register int i; printf("실행 시작\n"); for(i = 0; i < 10000000; i++); printf("실행 종료\n"); }
프로그램 실행화면
레지스터 변수라는 놈이 있다. 보통 변수를 선언하면 메모리를 할당받아 그 값을 저장한다. 하지만 레지스터 변수는 cpu안에 있는 레지스터(register)에 저장된다.
어셈블러를 해봤다면 조금 쉽게 이해할 수 있을 것이다. 모르겠다면 그냥 cpu에 저장할 수 있는 공간이 조금 있다고 생각하면 될 것 같다.
레지스터 변수를 쓰는 이유는 cpu에 저장되어 있기 때문에 일반 변수들보다 훨씬 빠르다는 것이다. 이를 보여 주기 위해서 for문을 사용해 그 증가값으로 레지스터 변수를 사용했다.
하지만 요즘엔 PC의 성능이 워낙 좋아졌기 때문에 큰 차이는 느낄 수 없다. 위에 나오는 프로그램보다 훨씬 더 많은 반복을 해야 한다면 또는 더 많이 접근해야 한다면 속도 차이를 느낄 수 있을 것이다.
레지스터 변수는 지역변수만 선언할 수 있다. 한 프로그램에서 두 개의 레지스터 변수를 선언할 수 있으며 32bit cpu는 32bit짜리 변수를 선언할 수 있다.
이 말은 즉 double형 변수는 선언할 수 없다는 것이다. 아마 레지스터 변수를 쓰는 일은 없을 것이라 생각된다.