기계에 수준에서 상수와 변수를 다르게 취급하는데, 즉시주소지정방식(Immediate Addressing Mode:명령어의 오퍼랜드가 데이터의 주소가 아니라, 명령어 수행에 필요한 데이터 그 자체)을 제공해서, 상수값을 직접 기계어 명령에 집어넣을 수 있게 한다.

위에서 말한것처럼 즉시주소지정방식이 아니라면, 상수값을 메모리에 저장해둔다음 저장된 곳에 접근해야 할 것인데, Operand에 실제 Data가 기록되어 있는 방식이므로, 데이터를 참조하기 위해 주기억장치에 접근할 필요가 없다.

따라서, 이러한 값들을 이용한다고 해서 성능이 나빠지는것은 아니다. 예를들어 #define 매크로 기능을 이용한다치면, 컴파일러는 이름이 있는곳에 직접 값을 바꿔넣기 때문에 컴파일시간문제를 떠나서 효율성 저하없이 프로그램의 가독성을 높일수 방법이 될수도 있다.

C의 경우와 C++의 경우 약간 다른데, C++의 경우 #define외에 const 키워드를 제공하여 상수를 처리한다.
이때 중요한 것은 const의 경우 사용하기에 따라 다르겠지만, const가 변수일수도 있다는 점이다.

const int arrSize1[10] = {0,};
const int arrSize2 = arrSize[0];
int arrSize3[ arrSize2 ];


'Language > C, C++' 카테고리의 다른 글

2. Comment  (0) 2012.03.27

+ Recent posts