소개
C 언어에서 포인터는 관계 연산자 (relational operators), 예를 들어 크다 (greater than), 작다 (less than), 같다 (equal to) 등을 사용하여 서로 비교할 수 있습니다. 이 랩에서는 C 프로그래밍 언어에서 포인터를 비교하는 방법을 보여주고, 동일한 배열을 가리키는 동일한 유형 및 다른 유형의 포인터에 대한 예시를 제공합니다.
포인터 변수 선언
프로그램의 요구 사항에 따라 동일하거나 다른 유형의 두 포인터 변수를 선언하는 것으로 시작합니다. 이 예제에서는 ptrA와 ptrB라는 두 개의 정수 포인터를 선언합니다.
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 프로그래밍에서 관계 연산자를 사용하여 포인터를 서로 비교할 수 있습니다. 이 랩의 예제는 동일한 배열을 가리키는 동일한 유형 및 다른 유형의 포인터를 비교하는 방법을 보여줍니다. 포인터를 비교할 때는 정확한 결과를 위해 동일한 배열을 가리키고 있는지 확인하십시오.



