[C, C++] 배열(Array)은 포인터(Pointer)가 아니다!
인트로 배열을 포인터라고 알고 있거나 배열의 이름이 포인터 내지는 포인터 상수라고 알고 있는 경우가 많다. 하지만 놀랍게도 배열은 포인터가 아니다! 배열은 배열이고 포인터는 포인터일 뿐이다. 다만 대부분의 코드에서 배열의 이름이 포인터로 변환되기에 배열의 이름 = 포인터라고 알고 있는 것 같다. 배열을 포인터로 나타낼 수 있는 이유는 C와 C++의 암시적인 변환(Decay) 정책에 의해 가능한 일이다. Decay란? 암시적으로 배열이 포인터로 변환하는 과정에서 배열의 타입과 크기를 잃어버리는 것을 Decay라고 한다. 본 포스팅에선 Decay를 "변환"이란 단어로 대체했다. 배열과 포인터 여기 배열이 하나 있다. int arr[3]; arr은 3개의 Integer를 담을 수 있는 메모리 공간이 있다. 그..