1. Const? |
: Const는 변수를 상수화 하기 위해 사용하는데, 쓰이는 위치에 따라서 용도가 조금 달라진다.
- 첫번째, const int* n
: 위와 같이 const가 자료형 뒤에 붙은 경우를 데이터 상수화 라고 하고 n이라는 포인터가 가리키는 대상을 상수화 하겠다는 의미가
된다.
- #include <iostream>
- using namespace std;
- const int*n;
- void main()
- {
- int b =10;
- n = &b;
- b = 20;
- cout<< b<<endl; //허용
- *n = 30; //error (you cannot assign to a variable that is const)
- }
위의 예제를 한번 보자 . n이라는 포인터가 가리키는 곳 B로 지정하고, B의 값은 변경하면 무리 없이 변경되는 것을 볼 수 있지만,
*n =30; 이 부분에서는 직접 실행해 보면, 에러가 나는것을 알 수 있다. n이 지닌 값은 변경이 안된다는 것이다. 즉, 실제로 메모리 공간
자체가 상수화 된것이 아니고, n이라는 포인터를 이용해서 데이터 변경을 막겠다는 의미가 된다. (하지만 변수 b를 이용해 변경은
가능하다)
- 두번째, int* const n
: 위와 같이 cosnt가 붙은 경우를 포인터
상수화 라고 한다. 예제를 통해 한번 알아 보자.
- #include <iostream>
- void main()
- {
- int a =20;
- int b =10;
- int* const n = &b;
- n = &a; //you cannot assign to a variable that is const
- }
위에서 같이 선언한 n이라는 포인터가 b를 가르키고 있을 시에, 이런 상황에 변수 a를 또 가리키도록 하려는 것을 허용 하지 않겠다는
의미가 된다.
- 세번째, const int* const n; : 데이터, 포인터 둘다 상수화 하겠다는 의미이다.
'개발지식창고 > C++' 카테고리의 다른 글
변수(Variable)와 레퍼런스(Reference) (0) | 2010.11.14 |
---|---|
데이터, 스택(Stack), 힙(Heap) 영역 (0) | 2010.11.14 |
인라인 함수(Inline Function) 와 네임스페이스(Namespace) (0) | 2010.11.14 |
함수 오버로딩과 디폴트 매개변수 (Funtion Overloading & Default Parameter) (0) | 2010.11.14 |
클래스와 static (0) | 2010.11.14 |