Computer >> Máy Tính >  >> Lập trình >> lập trình C

Làm thế nào để so sánh các con trỏ trong C / C ++?

Chúng ta có thể so sánh các con trỏ nếu chúng đang trỏ đến cùng một mảng. Con trỏ quan hệ có thể được sử dụng để so sánh hai con trỏ. Con trỏ không thể được nhân hoặc chia.

Trong C

Ví dụ

#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);
}

Đầu ra

P2 is greater than p1

Trong C ++

Ví dụ

#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);
}

Đầu ra

P2 is greater than p1

Một số điểm chính về so sánh con trỏ -

  • p1 <=p2 và p1> =p2 đều cho kết quả đúng và p1 p2 đều cho kết quả sai, nếu hai con trỏ p1 và p2 cùng loại trỏ đến cùng một đối tượng hoặc chức năng hoặc cả hai con trỏ trỏ đến điểm cuối của cùng một mảng hoặc cả hai đều rỗng.

  • p1 p2, p1 <=p2 và p1> =p2 là không xác định, nếu hai con trỏ p1 và p2 cùng kiểu trỏ đến các đối tượng khác nhau không phải là thành viên của cùng một đối tượng hoặc các phần tử của cùng một mảng hoặc đến các chức năng khác nhau hoặc nếu chỉ một trong số chúng là rỗng.

  • Nếu hai con trỏ trỏ đến các thành viên dữ liệu không tĩnh của cùng một đối tượng hoặc đến các subobject hoặc các phần tử mảng của các thành viên đó, với cùng một điều khiển truy cập thì kết quả sẽ được chỉ định.

  • kết quả là không xác định, nếu hai con trỏ trỏ đến các thành viên dữ liệu không tĩnh của cùng một đối tượng có kiểm soát truy cập khác nhau.