## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# 16.2. Comparing Pointers

## Problem

You need to know whether two pointers point to the same memory location. If they don’t, you need to know which of the two pointers points to a higher or lower element in the same block of memory.

## Solution

Using the `==` and `!=` operators, we can determine if two pointers point to the same memory location. For example, the code:

```unsafe
{
int[] arr = new int[5] {1,2,3,4,5};
fixed(int* ptrArr = &arr[0])
{
int* p1 = (ptrArr + 1);
int* p2 = (ptrArr + 3);

Console.WriteLine("p2 > p1");
Console.WriteLine("(p2 == p1) = " + (p2 == p1));
Console.WriteLine("(p2 != p1) = " + (p2 != p1));

p2 = p1;
Console.WriteLine("p2 == p1");
Console.WriteLine("(p2 == p1) = " + (p2 == p1));
Console.WriteLine("(p2 != p1) = " + (p2 != p1));
}
}```

displays the following:

```p2 > p1
(p2 == p1) = False
(p2 != p1) = True

p2 == p1
(p2 == p1) = True
(p2 != p1) = False```

Using the `>`, `<`, `>=`, or `<=` comparison operators, we can determine whether two pointers are pointing to a higher, lower, or the same element in an array. For example, the code:

`unsafe { int[] arr = new int[5] {1,2,3,4,5}; fixed(int* ptrArr = &arr[0]) { int* p1 = (ptrArr + 1); int* p2 = (ptrArr + 3); Console.WriteLine("p2 > p1"); Console.WriteLine("(p2 > p1) = " + (p2 > p1)); Console.WriteLine("(p2 < p1) = " + (p2 < p1)); Console.WriteLine("(p2 >= p1) = " + (p2 >= p1)); Console.WriteLine("(p2 <= p1) = " + (p2 <= p1)); p2 = p1; Console.WriteLine("p2 == p1"); Console.WriteLine("(p2 > p1) = " + (p2 > p1)); Console.WriteLine("(p2 ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required