C++/포인터 (Pointers)

일반적인 변수에 대한 포인터를 공부하다보면, 상수 값에 대한 포인터가 궁금해질 수 있습니다. const 키워드로 선언하는 상수는 알다시피 그 값이 선언과 초기화 이후에 변경할 수 없습니다. 그리고 포인터는 상수에 대한 기능도 역시 수행할 수 있습니다. 상수와 관련된 포인터는 총 세가지 종류로 분류할 수 있겠습니다. 상수에 대한 포인터 (pointers to constants) 상수 포인터 (constant pointers) 상수에 대한 상수 포인터 (constant pointers to constnats) 하나씩 알아보겠습니다. 1. 상수에 대한 포인터 (pointers to constants) 상수에 대한 포인터가 가르키는 데이터는 상수이고, 변경될 수 없습니다. 하지만 포인터 스스로는 변경되고 다른 ..
C++의 포인터는 Assignment Expressions (대입 표현식) Arithmetic Expressions (산술 표현식) Comparison Expressions (비교 표현식) 에서 사용이 가능합니다. 포인터에 대한 다양한 연산(산술)이 가능합니다. 다음은 포인터에 적용 가능한 몇가지 연산들입니다. (++) 포인터의 값을 증가시켜 배열의 다음 요소를 가르키도록 합니다. int_ptr++; (--) 포인터의 값을 감소시켜 배열의 이전 요소를 가르키도록 합니다. int_ptr--; (+) 포인터의 값을 n * sizeof(type) 만큼 증가시킵니다. int_ptr += n; or int_ptr = int_ptr + n; (-) 포인터의 값을 n * sizeof(type) 만큼 감소시킵니다. i..
배열과 포인터의 관계: Relationship Between Arrays and Pointers 배열과 포인터를 둘 다 얼추 이해하게 되면, 한가지 공통점을 알게 됩니다. 배열의 이름이 어떤 것을 의미하는지 기억하고 계시나요? 바로 '배열의 첫번째 데이터의 주소값'을 나타냅니다. 그리고, 포인터 변수의 값은 주소값이였습니다. 이렇게 보면 사실상 배열의 이름과 포인터는 동일한 것 같지 않나요? 실제로 만약 포인터가 배열의 요소와 동일한 타입을 가지고 있다면, 포인터와 배열은 상호교환적으로, (사실상) 동일하게 사용할 수 있습니다. 간단한 코드로 이를 확인해 보겠습니다. int scores[]{100, 90, 80}; cout
동적 할당: Dynamic Memory Allocation 우리는 그동안 정적 할당을 통해 메모리를 할당하고 있었습니다. 정적 할당을 통하면, 컴파일을 할 때에 필요한 메모리가 할당되고, 이는 프로그램 종료시까지 변동되지 않습니다. 예를들어, 프로그램 내부에서 어떠한 정수 x를 선언하였다면, 그 변수의 값은 변할 수 있으나 변수에게 할당된 메모리는 끝까지 변하지 않습니다. 그 할당된 메모리는 sizeof 함수로 알 수 있었습니다. 그에 반해 동적할당은 컴파일을 할 때가 아닌, 런타임 도중에 메모리를 할당할 수 있게 해줍니다. 동적 할당을 통해 Heap 영역에 데이터를 할당할 수 있습니다. 즉, 동적 할당은 힙 영역에서 발생합니다. 그리고 그 할당된 값에 대한 접근은 포인터를 통해서만 가능합니다. C++ ..
Ricky U. Lee
'C++/포인터 (Pointers)' 카테고리의 글 목록