포인터(Pointer)란?
변수나 배열의 요소, 함수 등이 놓여 있는 메모리의 주소를 값으로 갖는 변수. C 언어에서는 int *p처럼 선언하고, &x로 x의 주소를 꺼내며, *p로 p가 가리키는 곳의 값을 읽고 쓴다. 포인터에 정수를 더하면 가리키는 형의 크기를 단위로 하여 나아간다. 배열의 이름은 대부분의 식에서 첫 요소에 대한 포인터로 변환되며, a[i]는 *(a + i)와 같은 의미가 된다. 아무 곳도 가리키지 않음을 나타내는 값을 NULL 포인터라고 한다.
일본어 명칭: ポインタ
포인터(Pointer)은(는) C 언어 기초, 자료 구조와 알고리즘, ISA와 어셈블리 등 8개 분야의 연습 문제 25개에 나와요.
분야: C 언어 기초
자주 묻는 질문
포인터의 크기는 얼마인가요?
대부분의 64비트 환경에서는 8바이트, 32비트 마이컴에서는 4바이트입니다. 가리키는 곳의 형이 char든 double이든, 데이터에 대한 포인터의 크기는 일반적으로 같습니다. 포인터의 크기가 int의 크기와 같다고는 할 수 없으므로, 주소를 정수에 넣을 때는 stdint.h의 uintptr_t를 사용합니다.
const char *p와 char *const p는 무엇이 다른가요?
const char *p는 'const인 char를 가리키는 포인터'로, p를 통해 문자를 고쳐 쓸 수는 없지만 p 자체는 다른 주소로 바꿀 수 있습니다. char *const p는 '포인터 자체가 const'로, p는 바꿀 수 없지만 가리키는 곳은 고쳐 쓸 수 있습니다. const가 *의 왼쪽에 있으면 가리키는 곳, 오른쪽에 있으면 포인터 자체가 고정된다고 읽습니다.