C 언어 포인터 비교

CBeginner
지금 연습하기

소개

C 언어에서 포인터는 관계 연산자 (relational operators), 예를 들어 크다 (greater than), 작다 (less than), 같다 (equal to) 등을 사용하여 서로 비교할 수 있습니다. 이 랩에서는 C 프로그래밍 언어에서 포인터를 비교하는 방법을 보여주고, 동일한 배열을 가리키는 동일한 유형 및 다른 유형의 포인터에 대한 예시를 제공합니다.

포인터 변수 선언

프로그램의 요구 사항에 따라 동일하거나 다른 유형의 두 포인터 변수를 선언하는 것으로 시작합니다. 이 예제에서는 ptrAptrB라는 두 개의 정수 포인터를 선언합니다.

int *ptrA, *ptrB;

포인터 변수에 메모리 주소 할당

다음으로, 포인터 선언 연산자 (*) 와 주소 연산자 (&) 를 사용하여 포인터 변수에 메모리 주소를 할당합니다. 이 예제에서와 같이 캐스트 (cast) 를 사용하여 이 작업을 수행할 수도 있습니다.

ptrA = (int *) 1;
ptrB = (int *) 2;

포인터 변수 비교

두 포인터 변수를 관계 연산자 중 하나를 사용하여 비교합니다. 이 예제에서는 '보다 큼' 연산자 (>) 를 사용합니다. 조건이 참이면 if 블록 내의 문장을 출력합니다.

if(ptrB > ptrA) {
  printf("PtrB is greater than ptrA");
}

다양한 포인터 유형에 대한 단계 반복

동일한 배열을 가리키는 서로 다른 유형의 포인터 변수에 대해 1-3 단계를 반복합니다. 이 예제에서는 정수형 (ptrA) 과 float 형 (ptrB) 포인터를 선언하고 메모리 주소를 할당합니다.

int *ptrA;
float *ptrB;

ptrA = (int *) 1000;
ptrB = (float *) 2000;

포인터 비교 테스트

관계 연산자를 사용하여 두 포인터를 비교합니다.

if(ptrB > ptrA) {
  printf("PtrB is greater than ptrA");
}

main.c 파일에 코드 작성

~/project/ 디렉토리에 위치한 main.c 파일에 전체 프로그램을 작성합니다.

#include <stdio.h>

int main() {
  int *ptrA, *ptrB;
  float *ptrC, *ptrD;

  ptrA = (int *) 1;
  ptrB = (int *) 2;

  ptrC = (float *) 100;
  ptrD = (float *) 200;

  if (ptrB > ptrA) {
    printf("ptrB is greater than ptrA\n");
  }

  if (ptrD > ptrC) {
    printf("ptrD is greater than ptrC\n");
  }

  return 0;
}

프로그램 컴파일 및 실행

GCC 와 같은 C 컴파일러를 사용하여 프로그램을 컴파일하고, 포인터 비교를 테스트하기 위해 프로그램을 실행합니다.

요약

C 프로그래밍에서 관계 연산자를 사용하여 포인터를 서로 비교할 수 있습니다. 이 랩의 예제는 동일한 배열을 가리키는 동일한 유형 및 다른 유형의 포인터를 비교하는 방법을 보여줍니다. 포인터를 비교할 때는 정확한 결과를 위해 동일한 배열을 가리키고 있는지 확인하십시오.