因爲c#強調安全性,每次意圖將string的地址賦給指針時,系統都要報錯,原因是系統無法計算字符串的空間和地址,這裏不多bb,使用IntPtr類(using Runtime.InteropServices),就是類似於指針的東西,只不過指向非託管的內存塊。
一般對於char* ,void*這種可以直接對應IntPtr,比如在C#中,我們經常用string類型,其轉換爲IntPtr再傳給char*,void*等
例如char*與string互轉
string a = "11"; char* aChar = (char*)System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(a).ToPointer();
string result = Marshal.PtrToStringAnsi((IntPtr)aChar);