- 爱易网页
 
                        - 
                            C#教程
 
                        - C++结构体中双指针用C#如何表示 
 
                         
                    
                    
                    日期:2014-05-18  浏览次数:21763 次 
                    
                        
                         C++结构体中双指针用C#怎么表示?
struct FP_MatchResult
{
	int nCandidateN;
	char**	id_arr;
	int*	SimArr;
};
这个结构体用C#结构体怎么定义?
------解决方案--------------------
1. 一般可以采用括号把想要转换的数据类型括起来放在值左边. 它实际上是让编译器"忘记类型检查,把它看作其他类型".
2.标准c++显示转换语法
    
static_cast: 非强制转换,窄化转化,void*强制变换
const_cast:对const,volatile进行转换
reinterpret_cast:转换为完全不同的意思.
dynamic_caset:用于类型安全的向下转换.
static_cast<int>(i);
static_case<char>(i);
3. char* a[]
  atoi,atol,atof分别把字符数组转换为int,long,float类型
  atoi(a[1])
 //C++中的DLL函数原型为
       //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)
       //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2)
       //C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试
       //c++:HANDLE(void   *)          ----    c#:System.IntPtr  
       //c++:Byte(unsigned   char)     ----    c#:System.Byte  
       //c++:SHORT(short)              ----    c#:System.Int16  
       //c++:WORD(unsigned   short)    ----    c#:System.UInt16  
       //c++:INT(int)                  ----    c#:System.Int16
       //c++:INT(int)                  ----    c#:System.Int32  
       //c++:UINT(unsigned   int)      ----    c#:System.UInt16
       //c++:UINT(unsigned   int)      ----    c#:System.UInt32
       //c++:LONG(long)                ----    c#:System.Int32  
       //c++:ULONG(unsigned   long)    ----    c#:System.UInt32  
       //c++:DWORD(unsigned   long)    ----    c#:System.UInt32  
       //c++:DECIMAL                   ----    c#:System.Decimal  
       //c++:BOOL(long)                ----    c#:System.Boolean  
       //c++:CHAR(char)                ----    c#:System.Char  
       //c++:LPSTR(char   *)           ----    c#:System.String  
       //c++:LPWSTR(wchar_t   *)       ----    c#:System.String  
       //c++:LPCSTR(const   char   *)  ----    c#:System.String  
       //c++:LPCWSTR(const   wchar_t   *)      ----    c#:System.String  
       //c++:PCAHR(char   *)   ----    c#:System.String  
       //c++:BSTR              ----    c#:System.String  
       //c++:FLOAT(float)      ----    c#:System.Single  
       //c++:DOUBLE(double)    ----    c#:System.Double  
       //c++:VARIANT           ----    c#:System.Object  
       //c++:PBYTE(byte   *)   ----    c#:System.Byte[]  
       //c++:BSTR      ----    c#:StringBuilder
       //c++:LPCTSTR   ----    c#:StringBuilder
       //c++:LPCTSTR   ----    c#:string
       //c++:LPTSTR    ----    c#:[MarshalAs(UnmanagedType.LPTStr)] string  
       //c++:LPTSTR 输出变量名    ----    c#:StringBuilder 输出变量名
       //c++:LPCWSTR   ----    c#:IntPtr
       //c++:BOOL      ----    c#:bool  
       //c++:HMODULE   ----    c#:IntPtr   
       //c++:HINSTANCE ----    c#:IntPtr  
       //c++:结构体    ----    c#:public struct 结构体{};  
       //c++:结构体 **变量名   ----    c#:out 变量名   //C#中提前申明一个结构体实例化后的变量名
       //c++:结构体 &变量名    ----    c#:ref 结构体 变量名
       
       //c++:WORD      ----    c#:ushort
       //c++:DWORD     ----    c#:uint
       //c++:DWORD     ----    c#:int
       //c++:UCHAR     ----    c#:int
       //c++:UCHAR     ----    c#:byte
       //c++:UCHAR*    ----    c#:string
       //c++:UCHAR*    ----    c#:IntPtr
       //c++:GUID      ----    c#:Guid
       //c++:Handle    ----    c#:IntPtr
       //c++:HWND      ----    c#:IntPtr
       //c++:DWORD     ----    c#:int
       //c++:COLORREF  ----    c#:uint