본문 바로가기
IT/C Language

const , 변수에 선언

by Jang HyunWoong 2014. 12. 19.

const는 constant 지속적인, 변하지 않는 ... 여기서 나온 키워드이다. 

 

const 는 값의 변화를 방지하기 위한 키워드 이다. 

 

사용 방법

 

int const x = 10;

 

const int x = 5;

 

결과 변수 x는 변하지 않는 인티저(정수)값을 가지게 된다. 둘 다 새로 값을 변화시킬 수 없고 읽기만 가능하다. 

 

const는 주로 값의 변화를 주지 않기 위해서 사용된다 .

 

약간 생각해볼 점은 포인터에서 있다. 

 

두 가지 방법으로 정의가 되는데, 하나는 포인터가 가리키는 데이터를 변화시킬 수 있거나 포인터 그 자체를 변화시키는 것이다.

 

예를 들어

 

1. const int *pNum;

2. int *const pNum;

 

먼저 1번의 예를 보면

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int x = 10;
  5. int y = 20;
  6. int * const pNum = &x;
  7. *pNum = y; // succeed
  8. //pNum = &y; // fail
  9.  
  10. cout << pNum << " , " << &x << ", " << &y << endl;
  11. cout << *pNum;
  12.   return 0;
  13. }

stdout:

0xbfc1bd98 , 0xbfc1bd98, 0xbfc1bd9c
20

포인터 *pNum이 가리키는 값을 constant한게 아니라

변수 pNum을 constant 시켜비린 것이다. 

그렇기 때문에 포인터 *pNum이 가리키는 값을 변화 시킬 수 있다. 

하지만 pNum의 주소를 저장하고 있는 곳은 바꿀 수 없다. 

 

2번의 예를 보면

  1. #include <iostream>
  2. using namespace std; 
  3. int main() {
  4. int x = 10;
  5. int y = 20;
  6. const int *pNum = &x;
  7. // *pNum = 20; // fail
  8. pNum = &y; // succeed
  9.  
  10. cout << pNum << " , " << &x << ", " << &y << endl;
  11. cout << *pNum;
  12.   return 0;
  13. }

stdout:

0xbfdab1cc , 0xbfdab1c8, 0xbfdab1cc
20

const int 형태이다. 곧 바꿀 수 없는 int형이다. 

그렇기 때문에 포인터가 가리키는 변수 값을 바꿀 수 없다. 

하지만 pNum에 대한 값은 바꿀 수 있다. 

 

반응형

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

c언어 기초알고리즘 연습  (0) 2015.04.30
C++ 텍스트파일 배열로 저장  (0) 2014.12.19
파스칼의 세모꼴  (0) 2014.12.19
uchar  (0) 2014.12.19
산술 연산 관련 팁  (0) 2014.12.19