16.5. Returning a Pointer to a Particular Element in an Array
Problem
You need to create a method that accepts a pointer to an array, searches that array for a particular element, and returns a pointer to the found element.
Solution
The FindInArray
method, shown here, returns a pointer to an element found in an
array:
public unsafe int* FindInArray(int* theArray, int arrayLength, int valueToFind) { for (int counter = 0; counter < arrayLength; counter++) { if (theArray[counter] == valueToFind) { return (&theArray[counter]); } } return (null); }
This method is strongly typed for arrays that contain integers. To
modify this method to use another type, change the
int*
types to the pointer type of your choice.
Note that if no elements are found in the array, a
null
pointer is returned.
The method that creates an array of integers and passes a pointer to
this array into the FindInArray
method is shown
here:
public void TestFind( ) { unsafe { int[] numericArr = new int[3] {2,4,6}; fixed(int* ptrArr = &numericArr[0]) { int* foundItem = FindInArray(ptrArr, numericArr.Length, 4); if (foundItem != null) { Console.WriteLine(*foundItem); } else { Console.WriteLine("Not Found"); } } } }
Discussion
The FindInArray
method accepts three parameters.
The first parameter, theArray
, is a pointer to the
first element in the array that will be searched. The second
parameter, arrayLength
, is the length of the
array, and the final parameter, valueToFind
, is
the value we wish to find in the array theArray
.
The ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.