IntPtrs and unsafe bit-twiddling : Pointer « unsafe « C# / CSharp Tutorial






Pointers are variables that hold the addresses of other variables.

using System;
using System.IO;
using System.Reflection;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;

public class MainClass
{
    public unsafe static void Main()
    {
        int a = 10;
        Console.WriteLine("a is {0} ({0:X})", a);
        IntPtr ip = new IntPtr(&a);
        byte* pTarget = (byte*)ip.ToPointer() + 1;
        *pTarget = 2;

        Console.WriteLine("a is {0} ({0:X})", a);
    }
}
a is 10 (A)
a is 522 (20A)








36.3.Pointer
36.3.1.Declaring a Pointer
36.3.2.IntPtrs and unsafe bit-twiddling
36.3.3.The & is a unary operator that returns the memory address of its operand
36.3.4.Use fixed to put address of value into a pointer
36.3.5.Demonstrate the effects of pointer arithmethic
36.3.6.An array name with an index yields a pointer to the start of the array
36.3.7.Index pointer
36.3.8.Pointer arithmetic
36.3.9.Get a pointer to the start of a string and display the contents of string via pointer
36.3.10.Pointer of a pointer
36.3.11.Assign value of myInt using pointer
36.3.12.Safe Swap
36.3.13.Unsafe swap
36.3.14.C# Pointer Operators
36.3.15.Modifying an Immutable String with Pointer
36.3.16.Pointer Arithmetic