c和c在程序上有什么区别?C与C的对应类型
c和c在程序上有什么区别?C与C的对应类型//c :char * ---- c#:string //传入参数//c :char * ---- c#:StringBuilder//传出参数//c :char *变量名 ---- c#:ref string 变量名//c :char *输入变量名 ---- c#:string 输入变量名//c :char *输出变量名 ---- c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 输出变量名//c :char 变量名 ---- c#:byte 变量名 //C 中一个字符用一个字节表示 C#中一个字符用两个字节表示//c :char 数组名[数组大小] ---- c#:MarshalAs(UnmanagedType.ByValTStr SizeConst = 数组大小)] public string 数组名; ushort
//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
//c :unsigned char ---- c#:byte
//c :unsigned char * ---- c#:ref byte
//c :unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] byte[]
//c :unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] Intptr
//c :unsigned char & ---- c#:ref byte
//c :unsigned char 变量名 ---- c#:byte 变量名
//c :unsigned short 变量名 ---- c#:ushort 变量名
//c :unsigned int 变量名 ---- c#:uint 变量名
//c :unsigned long 变量名 ---- c#:ulong 变量名
//c :char 变量名 ---- c#:byte 变量名 //C 中一个字符用一个字节表示 C#中一个字符用两个字节表示
//c :char 数组名[数组大小] ---- c#:MarshalAs(UnmanagedType.ByValTStr SizeConst = 数组大小)] public string 数组名; ushort
//c :char * ---- c#:string //传入参数
//c :char * ---- c#:StringBuilder//传出参数
//c :char *变量名 ---- c#:ref string 变量名
//c :char *输入变量名 ---- c#:string 输入变量名
//c :char *输出变量名 ---- c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 输出变量名
//c :char ** ---- c#:string
//c :char **变量名 ---- c#:ref string 变量名
//c :const char * ---- c#:string
//c :char[] ---- c#:string
//c :char 变量名[数组大小] ---- c#:[MarshalAs(UnmanagedType.ByValTStr SizeConst=数组大小)] public string 变量名;
//c :struct 结构体名 *变量名 ---- c#:ref 结构体名 变量名
//c :委托 变量名 ---- c#:委托 变量名
//c :int ---- c#:int
//c :int ---- c#:ref int
//c :int & ---- c#:ref int
//c :int * ---- c#:ref int //C#中调用前需定义int 变量名 = 0;
//c :*int ---- c#:IntPtr
//c :int32 PIPTR * ---- c#:int32[]
//c :float PIPTR * ---- c#:float[]
//c :double** 数组名 ---- c#:ref double 数组名
//c :double*[] 数组名 ---- c#:ref double 数组名
//c :long ---- c#:int
//c :ulong ---- c#:int
//c :UINT8 * ---- c#:ref byte //C#中调用前需定义byte 变量名 = new byte();
//c :handle ---- c#:IntPtr
//c :hwnd ---- c#:IntPtr
//c :void * ---- c#:IntPtr
//c :void * user_obj_param ---- c#:IntPtr user_obj_param
//c :void * 对象名称 ---- c#:([MarshalAs(UnmanagedType.AsAny)]Object 对象名称
//c :char INT8 SBYTE CHAR ---- c#:System.SByte
//c :short short int INT16 SHORT ---- c#:System.Int16
//c :int long long int INT32 LONG32 BOOL INT ---- c#:System.Int32
//c :__int64 INT64 LONGLONG ---- c#:System.Int64
//c :unsigned char UINT8 UCHAR BYTE ---- c#:System.Byte
//c :unsigned short UINT16 USHORT WORD ATOM WCHAR __wchar_t ---- c#:System.UInt16
//c :unsigned unsigned int UINT32 ULONG32 DWORD32 ULONG DWORD UINT ---- c#:System.UInt32
//c :unsigned __int64 UINT64 DWORDLONG ULONGLONG ---- c#:System.UInt64
//c :float FLOAT ---- c#:System.Single
//c :double long double DOUBLE ---- c#:System.Double
//Win32 Types ---- CLR Type
//Struct需要在C#里重新定义一个Struct
//CallBack回调函数需要封装在一个委托里,delegate static extern int FunCallBack(string str);
//unsigned char** ppImage替换成IntPtr ppImage
//int& nWidth替换成ref int nWidth
//int int& 则都可用 ref int 对应
//双针指类型参数,可以用 ref IntPtr
//函数指针使用c : typedef double (fun_type1)(double); 对应 c#:public delegate double fun_type1(double);
//char* 的操作c : char*; 对应 c#:StringBuilder;
//c#中使用指针:在需要使用指针的地方 加 unsafe
//unsigned char对应public byte
/*
- typedef void (CALLBACKFUN1W)(wchar_t void* pArg);
- typedef void (CALLBACKFUN1A)(char void* pArg);
- bool BIOPRINT_SENSOR_API dllFun1(CALLBACKFUN1 pCallbackFun1 void* pArg);
- 调用方式为
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate void CallbackFunc1([MarshalAs(UnmanagedType.LPWStr)] StringBuilder strName IntPtr pArg);
*/