This documentation is archived and is not being maintained.
IntPtr::ToPointer Method
Visual Studio 2010
Converts the value of this instance to a pointer to an unspecified type.
Assembly: mscorlib (in mscorlib.dll)
The following example copies a string in reverse, by using byte pointers to read and write characters between the source and destination strings. Source and destination pointers are returned by using the ToPointer() method. The reverse string copy is an unsafe operation and, in C#, it is performed inside an unsafe code region. In C#, this example must be compiled with the /unsafe complier option.
using namespace System; using namespace System::Runtime::InteropServices; class NotTooSafeStringReverse { public: static void Main() { String^ stringA = "I seem to be turned around!"; int copylen = stringA->Length; // Allocate HGlobal memory for source and destination strings IntPtr sptr = Marshal::StringToHGlobalAnsi(stringA); IntPtr dptr = Marshal::AllocHGlobal(copylen + 1); char *src = (char *)sptr.ToPointer(); char *dst = (char *)dptr.ToPointer(); if (copylen > 0) { // set the source pointer to the end of the string // to do a reverse copy. src += copylen - 1; while (copylen-- > 0) { *dst++ = *src--; } *dst = 0; } String^ stringB = Marshal::PtrToStringAnsi(dptr); Console::WriteLine("Original:\n{0}\n", stringA); Console::WriteLine("Reversed:\n{0}", stringB); // Free HGlobal memory Marshal::FreeHGlobal(dptr); Marshal::FreeHGlobal(sptr); } }; int main() { NotTooSafeStringReverse::Main(); } // The progam has the following output: // // Original: // I seem to be turned around! // // Reversed: // !dnuora denrut eb ot mees I
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Show: