C언어 - const와 배열과 포인터

2020. 11. 12. 11:33개인공부/C언어

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


int main() {

	//type qualifiers : const, volatile,...

	const double  PI = 3.14159;
	//PI = 2.14159;

	const int arr[5] = { 1,2,3,4,5 }; 
	// const를 붙이면 배열의 각각의 값을 바꿀수없다.
	// arr[1] = 123; // const붙이면 Not Working 

	const double arr2[4] = { 1.0,2.0,3.0,4.0 };
	//arr2[0] = 100.0;

	const double* const pd = arr2;
	// *pd = 3.0;		// pd[0] = 3.0; arr2[0] = 3.0;
	// pd[2] = 1024.0;	// arr2[2] = 1024.0;
	// pd가 포인터인데 배열처럼 사용되고 있다.

	printf("pd[2]: %f\n", pd[2]);
	printf("arr[2]: %f\n", arr[2]);

	//pd++;	// allowed
			//const여도 포인터 자체의 값은 바꿀수 있게 되어있다.
			//const double* const pd = arr2; 하지만 이렇게 pd에 직접 const를 붙이면
			// 값을 바꿀수 없음

	printf("pd[2]: %f\n", pd[2]);
	printf("arr[2]: %f\n", arr[2]);

	return 0;

}

 

출처 : 홍정모의 따라배우는 C언어