[C++ 정리] const(상수)의 활용

const 키워드와 함께 정의한 변수의 값는 수정이 불가능하다. 즉 상수화 되어버리는데, 프로그래밍시에 바뀌어서는 안될값이 있을 경우 활용할 수 있다. 코드가 길어질 경우 실수로 변수의 값이 바뀌어 지는것을 방지할 수 있다.

Ex1> 배열의 크기를 상수화하여 전역에서 사용한다.

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	const unsigned short arraySize = 100;

	int number[arraySize] = { 0 };

	for (int i = 0; i < arraySize; i++)
	{
		cout << i + 1 << "::" << number[i] << "\n";
	}

	return 0;
}

 

Ex2> 포인터 또한 다음과 같은 유형으로 상수화 할 수 있다.

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int number1 = 10;
	int number2 = 20;

	// Ex 1>
	// 포인터가 가리키는 값이 const일 경우
	const int* pointer_ex1 = &number1;
	// 포인터값은 변경가능하다
	pointer_ex1 = &number2;
	// [Error] 가리키는 값을 변경할 수 없다.
	//*pointer_ex1 = 30;

	cout << *pointer_ex1 << "\n";

	// Ex 2>
	// 포인터가 const 일경우
	int* const pointer_ex2 = &number1;
	// [Error] : 포인터값을 변경할 수 없다
	// pointer_ex2 = &number2;
	// 가리키는 값은 변경가능하다
	*pointer_ex2 = 30;

	cout << *pointer_ex2 << "\n";

	// Ex 3>
	// 포인터와 가리키는 값이 const 일경우
	const int* const pointer_ex3 = &number1;
	// [Error] : 포인터값을 변경할 수 없다
	// pointer_ex2 = &number2;
	// [Error] 가리키는 값을 변경할 수 없다.
	//*pointer_ex2 = 30;

	cout << *pointer_ex3 << "\n";

	return 0;
}

 

댓글 남기기