Getting pointer for first entry in an array

I want to get pointer of first entry in the array. This is how I tried

int[] Results = { 1, 2, 3, 4, 5 };
unsafe
{ int* FirstResult = Results[0];
}

Get following compilation error. Any ideas how to fix it?

You can only take the address of an unfixed expression inside of a fixed statement initializer

2

3 Answers

Try this:

unsafe
{ fixed (int* FirstResult = &Results[0]) { }
}

The error codes are magic to get the answer - search for error code (CS0212 in your case) and you get explanation with proposed fix in a lot of case.

Search:

Result:

Code from the page:

 unsafe public void mf() { // Null-terminated ASCII characters in an sbyte array sbyte[] sbArr1 = new sbyte[] { 0x41, 0x42, 0x43, 0x00 }; sbyte* pAsciiUpper = &sbArr1[0]; // CS0212 // To resolve this error, delete the previous line and // uncomment the following code: // fixed (sbyte* pAsciiUpper = sbArr1) // { // String szAsciiUpper = new String(pAsciiUpper); // } }

The error message is pretty clear. You can refer to MSDN.

unsafe static void MyInsaneCode()
{ int[] Results = { 1, 2, 3, 4, 5 }; fixed (int* first = &Results[0]) { /* something */ }
}

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like