LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候再转换回来。 可以将其理解为long型的指针,指向void型。
头文件windef.h中有
typedef void far *LPVOID
32-bit指针,指向一个未指定类型的数据
例如:
class CMyClass { void Start(); static UINT StartThread(LPVOID lParam); }; void CMyClass::Start() { AfxBeginThread(StartThread, this); } UINT CMyClass::StartThread(LPVOID lParam) { CMyClass * pMyClass = (CMyClass*)lParam; ... return 0; }
那么void是什么东西?
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
far又是什么东西
far关键字就是和内存寻址有关。因为代码段和数据段都有一定的限制,比如64K。默认是near近指针,数据和代码可以从本段内调用。如果要调用段外的变量或函数就要声明成far远指针,典型的用法就是调用DLL的远堆变量,它是“远”的。far和near在现在Win32平台下没什么关系了 因为现在内存寻址是flat模式, 也就是平坦的4GB寻址
相关推荐
* LPVOID:在C++中,LPVOID类型是一个指针类型,而在C#中,它对应的是IntPtr或Object类型。 三、其他类型 在C++中,我们还有其他一些类型,如HRESULT、HANDLE、LPARAM等,而在C#中,我们也有相应的类型。下面是C++...
#### Lpvoid类型 - **VB**: 不直接支持 `Lpvoid` 类型,但在处理通用数据指针时,会使用 `Long` 类型。 - **PB (16Bit)**: 使用 `RefStructstruct_inst` 类型。 - **PB (32Bit)**: 使用 `RefStructstruct_inst` 类型...
2. **线程参数**:通常,`CreateThread`函数只能传递一个LPVOID类型的参数,这个参数可以是一个指针,指向包含所有需要传递的数据的结构。在易语言的示例中,为了传递多个不同类型参数,我们需要创建一个自定义数据...
//将文件的视图映射到一个进程的地址空间上,返回LPVOID类型的内存指针 lpData=(LPSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0); if(lpData==NULL) { AfxMessageBox(...
- `SystemInformation`:一个LPVOID类型的指针,用于接收返回的系统信息数据。 - `SystemInformationLength`:指定`SystemInformation`缓冲区的大小,根据所需信息类型确定。 - `ReturnLength`:如果`...
线程函数通常定义为返回DWORD类型的函数,接受一个LPVOID类型的参数。 其次,线程同步是确保多线程程序正确运行的关键。在VC++中,可以使用各种同步对象,如临界区(Critical Section)、互斥量(Mutex)、信号量...
- 每个线程函数都有一个指向LPVOID类型的参数,可用来向线程函数传递数据。 2. 线程的挂起与恢复: - SuspendThread()函数用于挂起线程的执行,而ResumeThread()函数用于恢复线程的执行。在多线程编程中,这两种...
VC++通过内存映射在程序间交换数据,通过这个小实例,你会了解到以下技巧:在内存映像中创建对象,将文件视图映射到一个进程的地址空间上、返回LPVOID类型的内存指针、给映像内存数据赋给本地变量、释放映像内存、...
### C++与PB的数据类型转换关系 在C++与PB(PowerBuilder)之间进行数据交换时,正确地处理数据类型转换至关重要。本文将详细介绍这两种语言之间的数据类型转换规则及其应用场景,帮助开发人员更好地理解并应用这些...
+ LPVOID:指向一个未指定类型的 32 位指针。 + LPDWORD:指向一个 DWORD 型指针。 * 句柄型: + HANDLE:Object 句柄。 + HBITMAP:bitmap 句柄。 + HBRUSH:brush 句柄。 + HCURSOR:cursor 句柄。 + HDC:...
22. LPVOID:32位,指向未指定类型的指针。 23. 其他如LPBOOL、LPBYTE等,表示对应类型的指针。 二、数据类型转化 2.1 数学类型与字符串转换 数学类型如int、double可以转换为字符串,反之亦然。例如,可以使用...
- `LPVOID`:32位指针,用于指向未知类型的内存地址。 - 其他`LP*`和`P*`类型:如`LPBOOL`、`PBYTE`等,它们是对应基本类型的指针,用于传递或接收参数。 3. **其他类型和关键字**: - `UCHAR`、`UINT`、`ULONG`...
- 当将C++中的`HANDLE`、`LPDWORD`和`LPVOID`类型映射到C#时,通常使用`IntPtr`类型。 - 对于C++中的字符串类型如`LPCTSTR`、`LPCTSTR`、`LPSTR`、`Wchar_t*`、`LPWSTR`等,在C#中一般映射为`String`或`...
5. `LPVOID`:对应于C#的`void*`,通常映射为`IntPtr`。 6. `LPCSTR` 和 `LPCTSTR`:表示字符串,C#中可以使用`string`,但在P/Invoke中通常需要转换为`StringBuilder`或使用`[MarshalAs(UnmanagedType.LPStr)]`属性...
11. **LPVOID**: 通用的指针类型,可以指向任何类型的内存。 12. **LPSTR/LPWSTR**: 分别表示指向`char`和`wchar_t`字符数组的指针。 13. **LPCSTR/LPCWSTR**: 常量版本的`LPSTR/LPWSTR`,通常用于函数参数,表明...
12. **LPVOID**: 32位指针,指向一个未指定类型的数据,可用于泛型编程。 13. **LPRESULT**: 32位数值,作为窗口函数或回调函数的返回值。 14. **UINT**: 在Win16中是16位无符号整数,在Win32中是32位无符号整数。 ...
12. LPVOID:32位指针,用于指向任何类型的数据,灵活性很高,但需要类型转换。 13. LPRESULT:32位数值,用作窗口函数或回调函数的返回值。 14. UINT:无符号整数,根据平台(Win16或Win32)可能是16位或32位。 ...
- 指针类型如`LPBOOL`, `LPBYTE`, `LPCOLORREF`, `LPCSTR/LPSTR/PCSTR`, `LPCWSTR/LPWSTR/PCWSTR`, `LPCTSTR/LPTSTR/PCTSTR`, `LPVOID`, `LPDWORD`等,用于指向不同类型的数据或字符串。 - `VARIANT`:变体类型,...
23. **LPVOID**:通用指针类型,可以指向任何类型的变量。 #### 三、总结 通过以上介绍,我们可以看到VC中定义了大量的数据类型,这些类型大多是对C++标准类型的一种扩展或者别名定义。了解这些数据类型对于使用VC...
指针类型如LPVOID、LPDWORD等,LP前缀表示Long Pointer,表示32位指针,而在16位系统中LP和P可能有区别。 MFC库中还有一些特有的数据类型,如POSITION,它用于标记集合中元素的位置,常用于容器类如CList或CMap。...