0Pricing
C++ Academy · 강의

역참조와 포인터 산술

포인터를 통해 메모리를 읽고 포인터 산술로 배열을 탐색합니다.

역참조와 포인터 산술은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

포인터를 통해 읽기

단항 * 연산자는 포인터가 가리키는 값을 읽습니다.

int x = 42;
int* p = &x;
std::cout << *p;   // 42

포인터를 통해 쓰기

대입문의 왼쪽에 *p를 사용해 대상에 값을 쓸 수도 있습니다.

*p = 100;
std::cout << x;   // 100

화살표 연산자

구조체나 클래스에 대한 포인터에서는 p->member가 (*p).member의 축약형입니다. 화살표를 사용하십시오. 이것이 관례입니다.

struct Point { int x, y; };
Point pt{3, 4};
Point* p = &pt;
std::cout << p->x;   // 3

포인터 산술 기초

포인터에 정수를 더하거나 뺄 수 있습니다. 결과는 바이트 단위가 아니라 요소 크기 단위로 이동합니다.

int a[5] = {10, 20, 30, 40, 50};
int* p = a;        // points to a[0]
p = p + 2;         // now points to a[2]
std::cout << *p;   // 30

배열 순회

포인터 산술은 배열 첨자 사용과 비슷하게 동작합니다. a[i]와 *(a + i)는 동일하며, p[i]는 모든 포인터에서 사용할 수 있습니다.

int a[] = {1, 2, 3, 4};
int* p = a;
for (int i = 0; i < 4; ++i) {
    std::cout << *(p + i) << " ";
}

두 포인터의 차이

같은 배열을 가리키는 두 포인터를 빼면 요소 간 거리를 얻습니다. 형식은 std::ptrdiff_t입니다.

int a[5];
int* first = a;
int* last  = a + 5;
std::ptrdiff_t len = last - first;  // 5

포인터 비교

==와 !=를 사용해 포인터가 같은지 비교할 수 있으며, 같은 배열 내부를 가리킬 때만 <로 순서를 비교할 수 있습니다.

포인터로 반복하기

관용적인 C 스타일 반복에서는 두 포인터, 즉 시작 포인터와 끝 포인터를 사용합니다.

int a[] = {1, 2, 3, 4, 5};
for (int* p = a; p != a + 5; ++p) {
    std::cout << *p << " ";
}

끝을 넘어가는 것도 허용됨

마지막 요소 바로 다음을 가리키는 포인터(“끝” 포인터)는 계산할 수 있지만, 이를 역참조하면 정의되지 않은 동작이 됩니다.

포인터 산술의 함정

흔한 실수는 다음과 같습니다.

  • 배열의 경계를 넘어가기
  • 포인터 형식을 섞어 사용하기(int* + char*)
  • 산술 연산이 바이트 단위가 아니라 요소 단위라는 점을 잊기

반복자 또는 범위 사용 권장

현대 C++에서는 원시 포인터 산술보다 반복자와 범위 라이브러리를 선호합니다. 포인터는 C API와 매우 저수준인 코드에서 여전히 중요합니다.

빠른 확인

p가 4바이트 정수의 시작을 가리키는 int*라면, p + 1은 무엇을 가리킵니까?

복습

*p는 대상을 읽거나 씁니다. p->member는 구조체 멤버에 접근합니다. 포인터 산술은 요소 크기 단위로 이동합니다. 신중하게 사용하십시오. 현대 코드에서는 반복자와 범위가 보통 더 안전한 선택입니다.

자주 묻는 질문

“역참조와 포인터 산술” 강의는 무료인가요?

네 — “역참조와 포인터 산술” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“역참조와 포인터 산술”에서 뭘 배우나요?

포인터를 통해 메모리를 읽고 포인터 산술로 배열을 탐색합니다. 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C++ Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“역참조와 포인터 산술” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 원시 포인터와 주소 연산자
  2. 역참조와 포인터 산술
  3. nullptr와 널 포인터 안전성
  4. 포인터와 참조 중 무엇을 사용할까요
← C++ Academy(으)로 돌아가기