Menu
CoddyTech

포인터 비교

Coddy C 여정의 논리 & 흐름 섹션에 포함된 레슨. 63개 중 10번째.

포인터 산술을 사용해 배열을 순회하는 방법을 배웠습니다. 이제 포인터도 일반 변수에 사용하는 것과 같은 관계 연산자인 ==, !=, <, >를 사용해 비교할 수 있다는 것을 알아보겠습니다.

두 포인터를 비교하면 메모리 주소를 비교하는 것입니다. 두 포인터가 모두 같은 배열의 요소를 가리키는 경우에 특히 유용하며, 메모리에서 두 포인터의 상대적인 위치를 확인할 수 있습니다.

int numbers[5] = {10, 20, 30, 40, 50};
int *start = numbers;        // 첫 번째 요소를 가리킴
int *end = numbers + 4;      // 마지막 요소를 가리킴

if (start < end) {
    printf("start comes before end in memory");
}

포인터 비교는 루프 조건에서 특히 강력해집니다. 카운터 변수를 사용하는 대신 현재 포인터 위치를 목표 포인터와 비교하여 루프를 언제 멈출지 제어할 수 있습니다. 이렇게 하면 배열 순회를 위한 간결하고 효율적인 코드를 작성할 수 있습니다.

핵심은 ptr1 < ptr2가 ptr1이 가리키는 요소가 배열에서 ptr2가 가리키는 요소보다 앞에 있다는 것을 알려준다는 점입니다. 이러한 관계 때문에 포인터 비교는 배열을 순차적으로 처리하는 루프를 제어하는 데 자연스럽게 적합합니다.

challenge icon

챌린지

쉬움

포인터 비교를 사용해 배열을 순회하고 특정 범위에 속하는 요소를 찾는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 8개의 요소를 가진 scores라는 정수 배열을 선언하고 {45, 78, 92, 63, 87, 34, 91, 56} 값으로 초기화합니다
  2. 정수 포인터 두 개를 선언합니다: start_ptr와 end_ptr
  3. start_ptr이 배열의 첫 번째 요소를 가리키도록 설정합니다
  4. 포인터 연산을 사용해 end_ptr이 배열의 마지막 요소를 가리키도록 설정합니다
  5. current_ptr이라는 포인터를 선언하고 첫 번째 요소를 가리키도록 초기화합니다
  6. 포인터 비교(current_ptr <= end_ptr)를 사용하는 while 루프로 배열을 순회합니다
  7. 루프 안에서:
    • 현재 값이 60 이상 90 이하인지 확인합니다
    • 값이 범위 안에 있으면 정확히 Value [value] is in range를 출력합니다
    • 값이 범위 안에 없으면 정확히 Value [value] is out of range를 출력합니다
    • current_ptr을 증가시켜 다음 요소로 이동합니다
  8. 루프가 끝난 후 포인터 비교를 사용해 current_ptr이 배열의 끝을 넘어섰는지 확인합니다. current_ptr > end_ptr인지 검사합니다
  9. 조건이 참이면 정확히 Traversal complete를 출력합니다

출력 결과는 다음 형식으로 표시되어야 합니다:

Value 45 is out of range
Value 78 is in range
Value 92 is out of range
Value 63 is in range
Value 87 is in range
Value 34 is out of range
Value 91 is out of range
Value 56 is out of range
Traversal complete

이 과제는 루프 조건에서 포인터 비교 연산자를 사용하는 방법, 포인터 연산으로 경계 포인터를 설정하는 방법, 그리고 포인터 비교를 이용하면 기존의 카운터 기반 루프보다 더 간결하게 배열 순회를 제어할 수 있다는 점에 대한 이해도를 확인합니다.

직접 해보기

#include <stdio.h>

int main() {
    // TODO: 아래에 코드를 작성하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러