Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++에서 포인터를 비교하는 방법은 무엇입니까?

<시간/>

포인터가 동일한 배열을 가리키는 경우 포인터를 비교할 수 있습니다. 관계형 포인터는 두 포인터를 비교하는 데 사용할 수 있습니다. 포인터는 곱하거나 나눌 수 없습니다.

C에서

#include <stdio.h>
int main() {
   int *p2;
   int *p1;
   p2 = (int *)300;
   p1 = (int *)200;
   if(p1 > p2) {
      printf("P1 is greater than p2");
   } else {
      printf("P2 is greater than p1");
   }
   return(0);
}

출력

P2 is greater than p1

C++에서

#include <iostream>
using namespace std;
int main() {
   int *p2;
   int *p1;
   p2 = (int *)300;
   p1 = (int *)200;
   if(p1>p2) {
      cout<<"P1 is greater than p2";
   } else {
      cout<<"P2 is greater than p1";
   }
   return(0);
}

출력

P2 is greater than p1

포인터 비교에 대한 몇 가지 핵심 사항 -

  • p1<=p2 및 p1>=p2는 모두 true를 생성하고 p1p2는 둘 다 false를 생성합니다. 동일한 유형의 두 포인터 p1 및 p2가 동일한 객체 또는 함수를 가리키거나 둘 다 같은 배열이거나 둘 다 null입니다.

  • p1p2, p1<=p2 및 p1>=p2는 지정되지 않은 유형의 두 포인터 p1 및 p2가 동일한 개체의 구성원이 아닌 다른 개체 또는 동일한 배열의 요소를 가리키는 경우 다른 함수 또는 그 중 하나만 null인 경우.

  • 두 포인터가 동일한 개체의 비정적 데이터 멤버를 가리키거나 동일한 액세스 제어를 사용하여 해당 멤버의 하위 개체 또는 배열 요소를 가리키는 경우 결과가 지정됩니다.

  • 두 포인터가 액세스 제어가 다른 동일한 개체의 비정적 데이터 멤버를 가리키는 경우 결과는 지정되지 않습니다.