Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19156
  • 博文数量: 3
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-30 16:40
文章分类
文章存档

2013年(1)

2012年(2)

我的朋友
最近访客

分类: WINDOWS

2013-04-09 23:20:23

原文地址:LPVOID类型 作者:sunnylocus

 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寻址.

阅读(1717) | 评论(0) | 转发(0) |
0

上一篇:C#将图片存入SQLServer数据库并读取

下一篇:没有了

给主人留下些什么吧!~~